<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-comment">{-
(c) The University of Glasgow 2006
(c) The GRASP/AQUA Project, Glasgow University, 1992-1998
-}</span><span>
</span><span id="line-5"></span><span>
</span><span id="line-6"></span><span class="hs-pragma">{-# LANGUAGE CPP #-}</span><span>
</span><span id="line-7"></span><span class="hs-pragma">{-# LANGUAGE RankNTypes #-}</span><span>
</span><span id="line-8"></span><span class="hs-pragma">{-# LANGUAGE TypeFamilies #-}</span><span>
</span><span id="line-9"></span><span class="hs-pragma">{-# LANGUAGE FlexibleContexts #-}</span><span>
</span><span id="line-10"></span><span class="hs-pragma">{-# LANGUAGE TypeSynonymInstances #-}</span><span>
</span><span id="line-11"></span><span class="hs-pragma">{-# LANGUAGE FlexibleInstances #-}</span><span>
</span><span id="line-12"></span><span class="hs-pragma">{-# LANGUAGE UndecidableInstances #-}</span><span>
</span><span id="line-13"></span><span class="hs-pragma">{-# LANGUAGE ScopedTypeVariables #-}</span><span>
</span><span id="line-14"></span><span>
</span><span id="line-15"></span><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">GHC.Core.Map</span><span> </span><span class="hs-special">(</span><span>
</span><span id="line-16"></span><span>   </span><span class="annot"><span class="hs-comment">-- * Maps over Core expressions</span></span><span>
</span><span id="line-17"></span><span>   </span><span class="annot"><a href="GHC.Core.Map.html#CoreMap"><span class="hs-identifier">CoreMap</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#emptyCoreMap"><span class="hs-identifier">emptyCoreMap</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#extendCoreMap"><span class="hs-identifier">extendCoreMap</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#lookupCoreMap"><span class="hs-identifier">lookupCoreMap</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#foldCoreMap"><span class="hs-identifier">foldCoreMap</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-18"></span><span>   </span><span class="annot"><span class="hs-comment">-- * Maps over 'Type's</span></span><span>
</span><span id="line-19"></span><span>   </span><span class="annot"><a href="GHC.Core.Map.html#TypeMap"><span class="hs-identifier">TypeMap</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#emptyTypeMap"><span class="hs-identifier">emptyTypeMap</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#extendTypeMap"><span class="hs-identifier">extendTypeMap</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#lookupTypeMap"><span class="hs-identifier">lookupTypeMap</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#foldTypeMap"><span class="hs-identifier">foldTypeMap</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-20"></span><span>   </span><span class="annot"><a href="GHC.Core.Map.html#LooseTypeMap"><span class="hs-identifier">LooseTypeMap</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-21"></span><span>   </span><span class="annot"><span class="hs-comment">-- ** With explicit scoping</span></span><span>
</span><span id="line-22"></span><span>   </span><span class="annot"><a href="GHC.Core.Map.html#CmEnv"><span class="hs-identifier">CmEnv</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#lookupCME"><span class="hs-identifier">lookupCME</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#extendTypeMapWithScope"><span class="hs-identifier">extendTypeMapWithScope</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#lookupTypeMapWithScope"><span class="hs-identifier">lookupTypeMapWithScope</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-23"></span><span>   </span><span class="annot"><a href="GHC.Core.Map.html#mkDeBruijnContext"><span class="hs-identifier">mkDeBruijnContext</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-24"></span><span>   </span><span class="annot"><span class="hs-comment">-- * Maps over 'Maybe' values</span></span><span>
</span><span id="line-25"></span><span>   </span><span class="annot"><a href="GHC.Data.TrieMap.html#MaybeMap"><span class="hs-identifier">MaybeMap</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-26"></span><span>   </span><span class="annot"><span class="hs-comment">-- * Maps over 'List' values</span></span><span>
</span><span id="line-27"></span><span>   </span><span class="annot"><a href="GHC.Data.TrieMap.html#ListMap"><span class="hs-identifier">ListMap</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-28"></span><span>   </span><span class="annot"><span class="hs-comment">-- * Maps over 'Literal's</span></span><span>
</span><span id="line-29"></span><span>   </span><span class="annot"><a href="GHC.Data.TrieMap.html#LiteralMap"><span class="hs-identifier">LiteralMap</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-30"></span><span>   </span><span class="annot"><span class="hs-comment">-- * Map for compressing leaves. See Note [Compressed TrieMap]</span></span><span>
</span><span id="line-31"></span><span>   </span><span class="annot"><a href="GHC.Data.TrieMap.html#GenMap"><span class="hs-identifier">GenMap</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-32"></span><span>   </span><span class="annot"><span class="hs-comment">-- * 'TrieMap' class</span></span><span>
</span><span id="line-33"></span><span>   </span><span class="annot"><a href="GHC.Data.TrieMap.html#TrieMap"><span class="hs-identifier">TrieMap</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Data.TrieMap.html#XT"><span class="hs-identifier">XT</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Data.TrieMap.html#insertTM"><span class="hs-identifier">insertTM</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Data.TrieMap.html#deleteTM"><span class="hs-identifier">deleteTM</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-34"></span><span>   </span><span class="annot"><a href="GHC.Core.Map.html#lkDFreeVar"><span class="hs-identifier">lkDFreeVar</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#xtDFreeVar"><span class="hs-identifier">xtDFreeVar</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-35"></span><span>   </span><span class="annot"><a href="GHC.Core.Map.html#lkDNamed"><span class="hs-identifier">lkDNamed</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#xtDNamed"><span class="hs-identifier">xtDNamed</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-36"></span><span>   </span><span class="annot"><a href="GHC.Data.TrieMap.html#%3E.%3E"><span class="hs-operator">(&gt;.&gt;)</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Data.TrieMap.html#%7C%3E"><span class="hs-operator">(|&gt;)</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Data.TrieMap.html#%7C%3E%3E"><span class="hs-operator">(|&gt;&gt;)</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-37"></span><span> </span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span class="hs-cpp">

#include &quot;HsVersions.h&quot;
</span><span>
</span><span id="line-41"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Prelude.html"><span class="hs-identifier">GHC.Prelude</span></a></span><span>
</span><span id="line-42"></span><span>
</span><span id="line-43"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Data.TrieMap.html"><span class="hs-identifier">GHC.Data.TrieMap</span></a></span><span>
</span><span id="line-44"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Core.html"><span class="hs-identifier">GHC.Core</span></a></span><span>
</span><span id="line-45"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Core.Coercion.html"><span class="hs-identifier">GHC.Core.Coercion</span></a></span><span>
</span><span id="line-46"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Name.html"><span class="hs-identifier">GHC.Types.Name</span></a></span><span>
</span><span id="line-47"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Core.Type.html"><span class="hs-identifier">GHC.Core.Type</span></a></span><span>
</span><span id="line-48"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html"><span class="hs-identifier">GHC.Core.TyCo.Rep</span></a></span><span>
</span><span id="line-49"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Var.html"><span class="hs-identifier">GHC.Types.Var</span></a></span><span>
</span><span id="line-50"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Data.FastString.html"><span class="hs-identifier">GHC.Data.FastString</span></a></span><span class="hs-special">(</span><span class="annot"><a href="GHC.Data.FastString.html#FastString"><span class="hs-identifier">FastString</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-51"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Utils.Misc.html"><span class="hs-identifier">GHC.Utils.Misc</span></a></span><span>
</span><span id="line-52"></span><span>
</span><span id="line-53"></span><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="annot"><a href="../../containers/src/Data.Map.html#"><span class="hs-identifier">Data.Map</span></a></span><span>    </span><span class="hs-keyword">as</span><span> </span><span class="annot"><span class="hs-identifier">Map</span></span><span>
</span><span id="line-54"></span><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="annot"><a href="../../containers/src/Data.IntMap.html#"><span class="hs-identifier">Data.IntMap</span></a></span><span> </span><span class="hs-keyword">as</span><span> </span><span class="annot"><span class="hs-identifier">IntMap</span></span><span>
</span><span id="line-55"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Var.Env.html"><span class="hs-identifier">GHC.Types.Var.Env</span></a></span><span>
</span><span id="line-56"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Name.Env.html"><span class="hs-identifier">GHC.Types.Name.Env</span></a></span><span>
</span><span id="line-57"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html"><span class="hs-identifier">GHC.Utils.Outputable</span></a></span><span>
</span><span id="line-58"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../base/src/Control.Monad.html#"><span class="hs-identifier">Control.Monad</span></a></span><span class="hs-special">(</span><span> </span><span class="annot"><a href="../../base/src/Control.Monad.html#%3E%3D%3E"><span class="hs-operator">(&gt;=&gt;)</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-59"></span><span>
</span><span id="line-60"></span><span class="hs-comment">{-
This module implements TrieMaps over Core related data structures
like CoreExpr or Type. It is built on the Tries from the TrieMap
module.

The code is very regular and boilerplate-like, but there is
some neat handling of *binders*.  In effect they are deBruijn
numbered on the fly.


-}</span><span>
</span><span id="line-71"></span><span>
</span><span id="line-72"></span><span class="hs-comment">----------------------</span><span>
</span><span id="line-73"></span><span class="hs-comment">-- Recall that</span><span>
</span><span id="line-74"></span><span class="hs-comment">--   Control.Monad.(&gt;=&gt;) :: (a -&gt; Maybe b) -&gt; (b -&gt; Maybe c) -&gt; a -&gt; Maybe c</span><span>
</span><span id="line-75"></span><span>
</span><span id="line-76"></span><span class="hs-comment">-- NB: Be careful about RULES and type families (#5821).  So we should make sure</span><span>
</span><span id="line-77"></span><span class="hs-comment">-- to specify @Key TypeMapX@ (and not @DeBruijn Type@, the reduced form)</span><span>
</span><span id="line-78"></span><span>
</span><span id="line-79"></span><span class="hs-comment">-- The CoreMap makes heavy use of GenMap. However the CoreMap Types are not</span><span>
</span><span id="line-80"></span><span class="hs-comment">-- known when defining GenMap so we can only specialize them here.</span><span>
</span><span id="line-81"></span><span>
</span><span id="line-82"></span><span id="local-6989586621680856831"><span class="hs-pragma">{-# SPECIALIZE</span><span> </span><span class="annot"><a href="GHC.Data.TrieMap.html#lkG"><span class="hs-pragma hs-type">lkG</span></a></span><span> </span><span class="hs-pragma">::</span><span> </span><span class="annot"><a href="GHC.Data.TrieMap.html#Key"><span class="hs-pragma hs-type">Key</span></a></span><span> </span><span class="annot"><a href="GHC.Core.Map.html#TypeMapX"><span class="hs-pragma hs-type">TypeMapX</span></a></span><span>     </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#TypeMapG"><span class="hs-pragma hs-type">TypeMapG</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680856831"><span class="hs-pragma hs-type">a</span></a></span><span>     </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-pragma hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680856831"><span class="hs-pragma hs-type">a</span></a></span><span> </span><span class="hs-pragma">#-}</span></span><span>
</span><span id="line-83"></span><span id="local-6989586621680856829"><span class="hs-pragma">{-# SPECIALIZE</span><span> </span><span class="annot"><a href="GHC.Data.TrieMap.html#lkG"><span class="hs-pragma hs-type">lkG</span></a></span><span> </span><span class="hs-pragma">::</span><span> </span><span class="annot"><a href="GHC.Data.TrieMap.html#Key"><span class="hs-pragma hs-type">Key</span></a></span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CoercionMapX"><span class="hs-pragma hs-type">CoercionMapX</span></a></span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CoercionMapG"><span class="hs-pragma hs-type">CoercionMapG</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680856829"><span class="hs-pragma hs-type">a</span></a></span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-pragma hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680856829"><span class="hs-pragma hs-type">a</span></a></span><span> </span><span class="hs-pragma">#-}</span></span><span>
</span><span id="line-84"></span><span id="local-6989586621680856828"><span class="hs-pragma">{-# SPECIALIZE</span><span> </span><span class="annot"><a href="GHC.Data.TrieMap.html#lkG"><span class="hs-pragma hs-type">lkG</span></a></span><span> </span><span class="hs-pragma">::</span><span> </span><span class="annot"><a href="GHC.Data.TrieMap.html#Key"><span class="hs-pragma hs-type">Key</span></a></span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CoreMapX"><span class="hs-pragma hs-type">CoreMapX</span></a></span><span>     </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CoreMapG"><span class="hs-pragma hs-type">CoreMapG</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680856828"><span class="hs-pragma hs-type">a</span></a></span><span>     </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-pragma hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680856828"><span class="hs-pragma hs-type">a</span></a></span><span> </span><span class="hs-pragma">#-}</span></span><span>
</span><span id="line-85"></span><span>
</span><span id="line-86"></span><span>
</span><span id="line-87"></span><span id="local-6989586621680856827"><span class="hs-pragma">{-# SPECIALIZE</span><span> </span><span class="annot"><a href="GHC.Data.TrieMap.html#xtG"><span class="hs-pragma hs-type">xtG</span></a></span><span> </span><span class="hs-pragma">::</span><span> </span><span class="annot"><a href="GHC.Data.TrieMap.html#Key"><span class="hs-pragma hs-type">Key</span></a></span><span> </span><span class="annot"><a href="GHC.Core.Map.html#TypeMapX"><span class="hs-pragma hs-type">TypeMapX</span></a></span><span>     </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="GHC.Data.TrieMap.html#XT"><span class="hs-pragma hs-type">XT</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680856827"><span class="hs-pragma hs-type">a</span></a></span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#TypeMapG"><span class="hs-pragma hs-type">TypeMapG</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680856827"><span class="hs-pragma hs-type">a</span></a></span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#TypeMapG"><span class="hs-pragma hs-type">TypeMapG</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680856827"><span class="hs-pragma hs-type">a</span></a></span><span> </span><span class="hs-pragma">#-}</span></span><span>
</span><span id="line-88"></span><span id="local-6989586621680856825"><span class="hs-pragma">{-# SPECIALIZE</span><span> </span><span class="annot"><a href="GHC.Data.TrieMap.html#xtG"><span class="hs-pragma hs-type">xtG</span></a></span><span> </span><span class="hs-pragma">::</span><span> </span><span class="annot"><a href="GHC.Data.TrieMap.html#Key"><span class="hs-pragma hs-type">Key</span></a></span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CoercionMapX"><span class="hs-pragma hs-type">CoercionMapX</span></a></span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="GHC.Data.TrieMap.html#XT"><span class="hs-pragma hs-type">XT</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680856825"><span class="hs-pragma hs-type">a</span></a></span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CoercionMapG"><span class="hs-pragma hs-type">CoercionMapG</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680856825"><span class="hs-pragma hs-type">a</span></a></span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CoercionMapG"><span class="hs-pragma hs-type">CoercionMapG</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680856825"><span class="hs-pragma hs-type">a</span></a></span><span> </span><span class="hs-pragma">#-}</span></span><span>
</span><span id="line-89"></span><span id="local-6989586621680856824"><span class="hs-pragma">{-# SPECIALIZE</span><span> </span><span class="annot"><a href="GHC.Data.TrieMap.html#xtG"><span class="hs-pragma hs-type">xtG</span></a></span><span> </span><span class="hs-pragma">::</span><span> </span><span class="annot"><a href="GHC.Data.TrieMap.html#Key"><span class="hs-pragma hs-type">Key</span></a></span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CoreMapX"><span class="hs-pragma hs-type">CoreMapX</span></a></span><span>     </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="GHC.Data.TrieMap.html#XT"><span class="hs-pragma hs-type">XT</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680856824"><span class="hs-pragma hs-type">a</span></a></span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CoreMapG"><span class="hs-pragma hs-type">CoreMapG</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680856824"><span class="hs-pragma hs-type">a</span></a></span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CoreMapG"><span class="hs-pragma hs-type">CoreMapG</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680856824"><span class="hs-pragma hs-type">a</span></a></span><span> </span><span class="hs-pragma">#-}</span></span><span>
</span><span id="line-90"></span><span>
</span><span id="line-91"></span><span id="local-6989586621680856822"><span id="local-6989586621680856823"><span class="hs-pragma">{-# SPECIALIZE</span><span> </span><span class="annot"><a href="GHC.Data.TrieMap.html#mapG"><span class="hs-pragma hs-type">mapG</span></a></span><span> </span><span class="hs-pragma">::</span><span> </span><span class="hs-pragma">(</span><span class="annot"><a href="#local-6989586621680856823"><span class="hs-pragma hs-type">a</span></a></span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680856822"><span class="hs-pragma hs-type">b</span></a></span><span class="hs-pragma">)</span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#TypeMapG"><span class="hs-pragma hs-type">TypeMapG</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680856823"><span class="hs-pragma hs-type">a</span></a></span><span>     </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#TypeMapG"><span class="hs-pragma hs-type">TypeMapG</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680856822"><span class="hs-pragma hs-type">b</span></a></span><span> </span><span class="hs-pragma">#-}</span></span></span><span>
</span><span id="line-92"></span><span id="local-6989586621680856819"><span id="local-6989586621680856820"><span class="hs-pragma">{-# SPECIALIZE</span><span> </span><span class="annot"><a href="GHC.Data.TrieMap.html#mapG"><span class="hs-pragma hs-type">mapG</span></a></span><span> </span><span class="hs-pragma">::</span><span> </span><span class="hs-pragma">(</span><span class="annot"><a href="#local-6989586621680856820"><span class="hs-pragma hs-type">a</span></a></span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680856819"><span class="hs-pragma hs-type">b</span></a></span><span class="hs-pragma">)</span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CoercionMapG"><span class="hs-pragma hs-type">CoercionMapG</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680856820"><span class="hs-pragma hs-type">a</span></a></span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CoercionMapG"><span class="hs-pragma hs-type">CoercionMapG</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680856819"><span class="hs-pragma hs-type">b</span></a></span><span> </span><span class="hs-pragma">#-}</span></span></span><span>
</span><span id="line-93"></span><span id="local-6989586621680856817"><span id="local-6989586621680856818"><span class="hs-pragma">{-# SPECIALIZE</span><span> </span><span class="annot"><a href="GHC.Data.TrieMap.html#mapG"><span class="hs-pragma hs-type">mapG</span></a></span><span> </span><span class="hs-pragma">::</span><span> </span><span class="hs-pragma">(</span><span class="annot"><a href="#local-6989586621680856818"><span class="hs-pragma hs-type">a</span></a></span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680856817"><span class="hs-pragma hs-type">b</span></a></span><span class="hs-pragma">)</span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CoreMapG"><span class="hs-pragma hs-type">CoreMapG</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680856818"><span class="hs-pragma hs-type">a</span></a></span><span>     </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CoreMapG"><span class="hs-pragma hs-type">CoreMapG</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680856817"><span class="hs-pragma hs-type">b</span></a></span><span> </span><span class="hs-pragma">#-}</span></span></span><span>
</span><span id="line-94"></span><span>
</span><span id="line-95"></span><span id="local-6989586621680856815"><span id="local-6989586621680856816"><span class="hs-pragma">{-# SPECIALIZE</span><span> </span><span class="annot"><a href="GHC.Data.TrieMap.html#fdG"><span class="hs-pragma hs-type">fdG</span></a></span><span> </span><span class="hs-pragma">::</span><span> </span><span class="hs-pragma">(</span><span class="annot"><a href="#local-6989586621680856816"><span class="hs-pragma hs-type">a</span></a></span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680856815"><span class="hs-pragma hs-type">b</span></a></span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680856815"><span class="hs-pragma hs-type">b</span></a></span><span class="hs-pragma">)</span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#TypeMapG"><span class="hs-pragma hs-type">TypeMapG</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680856816"><span class="hs-pragma hs-type">a</span></a></span><span>     </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680856815"><span class="hs-pragma hs-type">b</span></a></span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680856815"><span class="hs-pragma hs-type">b</span></a></span><span> </span><span class="hs-pragma">#-}</span></span></span><span>
</span><span id="line-96"></span><span id="local-6989586621680856812"><span id="local-6989586621680856813"><span class="hs-pragma">{-# SPECIALIZE</span><span> </span><span class="annot"><a href="GHC.Data.TrieMap.html#fdG"><span class="hs-pragma hs-type">fdG</span></a></span><span> </span><span class="hs-pragma">::</span><span> </span><span class="hs-pragma">(</span><span class="annot"><a href="#local-6989586621680856813"><span class="hs-pragma hs-type">a</span></a></span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680856812"><span class="hs-pragma hs-type">b</span></a></span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680856812"><span class="hs-pragma hs-type">b</span></a></span><span class="hs-pragma">)</span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CoercionMapG"><span class="hs-pragma hs-type">CoercionMapG</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680856813"><span class="hs-pragma hs-type">a</span></a></span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680856812"><span class="hs-pragma hs-type">b</span></a></span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680856812"><span class="hs-pragma hs-type">b</span></a></span><span> </span><span class="hs-pragma">#-}</span></span></span><span>
</span><span id="line-97"></span><span id="local-6989586621680856810"><span id="local-6989586621680856811"><span class="hs-pragma">{-# SPECIALIZE</span><span> </span><span class="annot"><a href="GHC.Data.TrieMap.html#fdG"><span class="hs-pragma hs-type">fdG</span></a></span><span> </span><span class="hs-pragma">::</span><span> </span><span class="hs-pragma">(</span><span class="annot"><a href="#local-6989586621680856811"><span class="hs-pragma hs-type">a</span></a></span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680856810"><span class="hs-pragma hs-type">b</span></a></span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680856810"><span class="hs-pragma hs-type">b</span></a></span><span class="hs-pragma">)</span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CoreMapG"><span class="hs-pragma hs-type">CoreMapG</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680856811"><span class="hs-pragma hs-type">a</span></a></span><span>     </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680856810"><span class="hs-pragma hs-type">b</span></a></span><span> </span><span class="hs-pragma">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680856810"><span class="hs-pragma hs-type">b</span></a></span><span> </span><span class="hs-pragma">#-}</span></span></span><span>
</span><span id="line-98"></span><span>
</span><span id="line-99"></span><span>
</span><span id="line-100"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
                   CoreMap
*                                                                      *
************************************************************************
-}</span><span>
</span><span id="line-107"></span><span>
</span><span id="line-108"></span><span id="local-6989586621680857249"><span id="local-6989586621680857251"><span class="annot"><a href="GHC.Core.Map.html#lkDNamed"><span class="hs-identifier hs-type">lkDNamed</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#NamedThing"><span class="hs-identifier hs-type">NamedThing</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857251"><span class="hs-identifier hs-type">n</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680857251"><span class="hs-identifier hs-type">n</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.Env.html#DNameEnv"><span class="hs-identifier hs-type">DNameEnv</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857249"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857249"><span class="hs-identifier hs-type">a</span></a></span></span></span><span>
</span><span id="line-109"></span><span id="lkDNamed"><span class="annot"><span class="annottext">lkDNamed :: forall n a. NamedThing n =&gt; n -&gt; DNameEnv a -&gt; Maybe a
</span><a href="GHC.Core.Map.html#lkDNamed"><span class="hs-identifier hs-var hs-var">lkDNamed</span></a></span></span><span> </span><span id="local-6989586621680856807"><span class="annot"><span class="annottext">n
</span><a href="#local-6989586621680856807"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span id="local-6989586621680856806"><span class="annot"><span class="annottext">DNameEnv a
</span><a href="#local-6989586621680856806"><span class="hs-identifier hs-var">env</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DNameEnv a -&gt; Name -&gt; Maybe a
forall a. DNameEnv a -&gt; Name -&gt; Maybe a
</span><a href="GHC.Types.Name.Env.html#lookupDNameEnv"><span class="hs-identifier hs-var">lookupDNameEnv</span></a></span><span> </span><span class="annot"><span class="annottext">DNameEnv a
</span><a href="#local-6989586621680856806"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">n -&gt; Name
forall a. NamedThing a =&gt; a -&gt; Name
</span><a href="GHC.Types.Name.html#getName"><span class="hs-identifier hs-var">getName</span></a></span><span> </span><span class="annot"><span class="annottext">n
</span><a href="#local-6989586621680856807"><span class="hs-identifier hs-var">n</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-110"></span><span>
</span><span id="line-111"></span><span id="local-6989586621680857241"><span id="local-6989586621680857242"><span class="annot"><a href="GHC.Core.Map.html#xtDNamed"><span class="hs-identifier hs-type">xtDNamed</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#NamedThing"><span class="hs-identifier hs-type">NamedThing</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857242"><span class="hs-identifier hs-type">n</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680857242"><span class="hs-identifier hs-type">n</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Data.TrieMap.html#XT"><span class="hs-identifier hs-type">XT</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857241"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.Env.html#DNameEnv"><span class="hs-identifier hs-type">DNameEnv</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857241"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Name.Env.html#DNameEnv"><span class="hs-identifier hs-type">DNameEnv</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857241"><span class="hs-identifier hs-type">a</span></a></span></span></span><span>
</span><span id="line-112"></span><span id="xtDNamed"><span class="annot"><span class="annottext">xtDNamed :: forall n a. NamedThing n =&gt; n -&gt; XT a -&gt; DNameEnv a -&gt; DNameEnv a
</span><a href="GHC.Core.Map.html#xtDNamed"><span class="hs-identifier hs-var hs-var">xtDNamed</span></a></span></span><span> </span><span id="local-6989586621680856801"><span class="annot"><span class="annottext">n
</span><a href="#local-6989586621680856801"><span class="hs-identifier hs-var">tc</span></a></span></span><span> </span><span id="local-6989586621680856800"><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680856800"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span id="local-6989586621680856799"><span class="annot"><span class="annottext">DNameEnv a
</span><a href="#local-6989586621680856799"><span class="hs-identifier hs-var">m</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">XT a -&gt; DNameEnv a -&gt; Name -&gt; DNameEnv a
forall a. (Maybe a -&gt; Maybe a) -&gt; DNameEnv a -&gt; Name -&gt; DNameEnv a
</span><a href="GHC.Types.Name.Env.html#alterDNameEnv"><span class="hs-identifier hs-var">alterDNameEnv</span></a></span><span> </span><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680856800"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">DNameEnv a
</span><a href="#local-6989586621680856799"><span class="hs-identifier hs-var">m</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">n -&gt; Name
forall a. NamedThing a =&gt; a -&gt; Name
</span><a href="GHC.Types.Name.html#getName"><span class="hs-identifier hs-var">getName</span></a></span><span> </span><span class="annot"><span class="annottext">n
</span><a href="#local-6989586621680856801"><span class="hs-identifier hs-var">tc</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-113"></span><span>
</span><span id="line-114"></span><span>
</span><span id="line-115"></span><span class="hs-comment">{-
Note [Binders]
~~~~~~~~~~~~~~
 * In general we check binders as late as possible because types are
   less likely to differ than expression structure.  That's why
      cm_lam :: CoreMapG (TypeMapG a)
   rather than
      cm_lam :: TypeMapG (CoreMapG a)

 * We don't need to look at the type of some binders, notably
     - the case binder in (Case _ b _ _)
     - the binders in an alternative
   because they are totally fixed by the context

Note [Empty case alternatives]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* For a key (Case e b ty (alt:alts))  we don't need to look the return type
  'ty', because every alternative has that type.

* For a key (Case e b ty []) we MUST look at the return type 'ty', because
  otherwise (Case (error () &quot;urk&quot;) _ Int  []) would compare equal to
            (Case (error () &quot;urk&quot;) _ Bool [])
  which is utterly wrong (#6097)

We could compare the return type regardless, but the wildly common case
is that it's unnecessary, so we have two fields (cm_case and cm_ecase)
for the two possibilities.  Only cm_ecase looks at the type.

See also Note [Empty case alternatives] in GHC.Core.
-}</span><span>
</span><span id="line-145"></span><span>
</span><span id="line-146"></span><span class="hs-comment">-- | @CoreMap a@ is a map from 'CoreExpr' to @a@.  If you are a client, this</span><span>
</span><span id="line-147"></span><span class="hs-comment">-- is the type you want.</span><span>
</span><span id="line-148"></span><span class="hs-keyword">newtype</span><span> </span><span id="CoreMap"><span class="annot"><a href="GHC.Core.Map.html#CoreMap"><span class="hs-identifier hs-var">CoreMap</span></a></span></span><span> </span><span id="local-6989586621680857221"><span class="annot"><a href="#local-6989586621680857221"><span class="hs-identifier hs-type">a</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="CoreMap"><span class="annot"><a href="GHC.Core.Map.html#CoreMap"><span class="hs-identifier hs-var">CoreMap</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#CoreMapG"><span class="hs-identifier hs-type">CoreMapG</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857221"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-149"></span><span>
</span><span id="line-150"></span><span class="hs-keyword">instance</span><span> </span><span class="annot"><a href="GHC.Data.TrieMap.html#TrieMap"><span class="hs-identifier hs-type">TrieMap</span></a></span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CoreMap"><span class="hs-identifier hs-type">CoreMap</span></a></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-151"></span><span>    </span><span class="hs-keyword">type</span><span> </span><span id="Key"><span class="annot"><a href="GHC.Data.TrieMap.html#Key"><span class="hs-identifier hs-var">Key</span></a></span></span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CoreMap"><span class="hs-identifier hs-type">CoreMap</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Core.html#CoreExpr"><span class="hs-identifier hs-type">CoreExpr</span></a></span><span>
</span><span id="line-152"></span><span>    </span><span id="local-6989586621680856783"><span class="annot"><span class="annottext">emptyTM :: forall a. CoreMap a
</span><a href="GHC.Data.TrieMap.html#emptyTM"><span class="hs-identifier hs-var hs-var hs-var hs-var">emptyTM</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoreMapG a -&gt; CoreMap a
forall a. CoreMapG a -&gt; CoreMap a
</span><a href="GHC.Core.Map.html#CoreMap"><span class="hs-identifier hs-var">CoreMap</span></a></span><span> </span><span class="annot"><span class="annottext">CoreMapG a
forall (m :: * -&gt; *) a. TrieMap m =&gt; m a
</span><a href="GHC.Data.TrieMap.html#emptyTM"><span class="hs-identifier hs-var">emptyTM</span></a></span><span>
</span><span id="line-153"></span><span>    </span><span id="local-6989586621680856777"><span class="annot"><span class="annottext">lookupTM :: forall b. Key CoreMap -&gt; CoreMap b -&gt; Maybe b
</span><a href="GHC.Data.TrieMap.html#lookupTM"><span class="hs-identifier hs-var hs-var hs-var hs-var">lookupTM</span></a></span></span><span> </span><span id="local-6989586621680856775"><span class="annot"><span class="annottext">Key CoreMap
</span><a href="#local-6989586621680856775"><span class="hs-identifier hs-var">k</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#CoreMap"><span class="hs-identifier hs-type">CoreMap</span></a></span><span> </span><span id="local-6989586621680856774"><span class="annot"><span class="annottext">CoreMapG b
</span><a href="#local-6989586621680856774"><span class="hs-identifier hs-var">m</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Key (GenMap CoreMapX) -&gt; CoreMapG b -&gt; Maybe b
forall (m :: * -&gt; *) b. TrieMap m =&gt; Key m -&gt; m b -&gt; Maybe b
</span><a href="GHC.Data.TrieMap.html#lookupTM"><span class="hs-identifier hs-var">lookupTM</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoreExpr -&gt; DeBruijn CoreExpr
forall a. a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#deBruijnize"><span class="hs-identifier hs-var">deBruijnize</span></a></span><span> </span><span class="annot"><span class="annottext">Key CoreMap
CoreExpr
</span><a href="#local-6989586621680856775"><span class="hs-identifier hs-var">k</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">CoreMapG b
</span><a href="#local-6989586621680856774"><span class="hs-identifier hs-var">m</span></a></span><span>
</span><span id="line-154"></span><span>    </span><span id="local-6989586621680856768"><span class="annot"><span class="annottext">alterTM :: forall b. Key CoreMap -&gt; XT b -&gt; CoreMap b -&gt; CoreMap b
</span><a href="GHC.Data.TrieMap.html#alterTM"><span class="hs-identifier hs-var hs-var hs-var hs-var">alterTM</span></a></span></span><span> </span><span id="local-6989586621680856766"><span class="annot"><span class="annottext">Key CoreMap
</span><a href="#local-6989586621680856766"><span class="hs-identifier hs-var">k</span></a></span></span><span> </span><span id="local-6989586621680856765"><span class="annot"><span class="annottext">XT b
</span><a href="#local-6989586621680856765"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#CoreMap"><span class="hs-identifier hs-type">CoreMap</span></a></span><span> </span><span id="local-6989586621680856764"><span class="annot"><span class="annottext">CoreMapG b
</span><a href="#local-6989586621680856764"><span class="hs-identifier hs-var">m</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoreMapG b -&gt; CoreMap b
forall a. CoreMapG a -&gt; CoreMap a
</span><a href="GHC.Core.Map.html#CoreMap"><span class="hs-identifier hs-var">CoreMap</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Key (GenMap CoreMapX) -&gt; XT b -&gt; CoreMapG b -&gt; CoreMapG b
forall (m :: * -&gt; *) b. TrieMap m =&gt; Key m -&gt; XT b -&gt; m b -&gt; m b
</span><a href="GHC.Data.TrieMap.html#alterTM"><span class="hs-identifier hs-var">alterTM</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoreExpr -&gt; DeBruijn CoreExpr
forall a. a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#deBruijnize"><span class="hs-identifier hs-var">deBruijnize</span></a></span><span> </span><span class="annot"><span class="annottext">Key CoreMap
CoreExpr
</span><a href="#local-6989586621680856766"><span class="hs-identifier hs-var">k</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">XT b
</span><a href="#local-6989586621680856765"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">CoreMapG b
</span><a href="#local-6989586621680856764"><span class="hs-identifier hs-var">m</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-155"></span><span>    </span><span id="local-6989586621680856759"><span class="annot"><span class="annottext">foldTM :: forall a b. (a -&gt; b -&gt; b) -&gt; CoreMap a -&gt; b -&gt; b
</span><a href="GHC.Data.TrieMap.html#foldTM"><span class="hs-identifier hs-var hs-var hs-var hs-var">foldTM</span></a></span></span><span> </span><span id="local-6989586621680856757"><span class="annot"><span class="annottext">a -&gt; b -&gt; b
</span><a href="#local-6989586621680856757"><span class="hs-identifier hs-var">k</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#CoreMap"><span class="hs-identifier hs-type">CoreMap</span></a></span><span> </span><span id="local-6989586621680856756"><span class="annot"><span class="annottext">CoreMapG a
</span><a href="#local-6989586621680856756"><span class="hs-identifier hs-var">m</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(a -&gt; b -&gt; b) -&gt; CoreMapG a -&gt; b -&gt; b
forall (m :: * -&gt; *) a b.
TrieMap m =&gt;
(a -&gt; b -&gt; b) -&gt; m a -&gt; b -&gt; b
</span><a href="GHC.Data.TrieMap.html#foldTM"><span class="hs-identifier hs-var">foldTM</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b -&gt; b
</span><a href="#local-6989586621680856757"><span class="hs-identifier hs-var">k</span></a></span><span> </span><span class="annot"><span class="annottext">CoreMapG a
</span><a href="#local-6989586621680856756"><span class="hs-identifier hs-var">m</span></a></span><span>
</span><span id="line-156"></span><span>    </span><span id="local-6989586621680856751"><span class="annot"><span class="annottext">mapTM :: forall a b. (a -&gt; b) -&gt; CoreMap a -&gt; CoreMap b
</span><a href="GHC.Data.TrieMap.html#mapTM"><span class="hs-identifier hs-var hs-var hs-var hs-var">mapTM</span></a></span></span><span> </span><span id="local-6989586621680856749"><span class="annot"><span class="annottext">a -&gt; b
</span><a href="#local-6989586621680856749"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#CoreMap"><span class="hs-identifier hs-type">CoreMap</span></a></span><span> </span><span id="local-6989586621680856748"><span class="annot"><span class="annottext">CoreMapG a
</span><a href="#local-6989586621680856748"><span class="hs-identifier hs-var">m</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoreMapG b -&gt; CoreMap b
forall a. CoreMapG a -&gt; CoreMap a
</span><a href="GHC.Core.Map.html#CoreMap"><span class="hs-identifier hs-var">CoreMap</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(a -&gt; b) -&gt; CoreMapG a -&gt; CoreMapG b
forall (m :: * -&gt; *) a b. TrieMap m =&gt; (a -&gt; b) -&gt; m a -&gt; m b
</span><a href="GHC.Data.TrieMap.html#mapTM"><span class="hs-identifier hs-var">mapTM</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b
</span><a href="#local-6989586621680856749"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">CoreMapG a
</span><a href="#local-6989586621680856748"><span class="hs-identifier hs-var">m</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-157"></span><span>
</span><span id="line-158"></span><span class="hs-comment">-- | @CoreMapG a@ is a map from @DeBruijn CoreExpr@ to @a@.  The extended</span><span>
</span><span id="line-159"></span><span class="hs-comment">-- key makes it suitable for recursive traversal, since it can track binders,</span><span>
</span><span id="line-160"></span><span class="hs-comment">-- but it is strictly internal to this module.  If you are including a 'CoreMap'</span><span>
</span><span id="line-161"></span><span class="hs-comment">-- inside another 'TrieMap', this is the type you want.</span><span>
</span><span id="line-162"></span><span class="hs-keyword">type</span><span> </span><span id="CoreMapG"><span class="annot"><a href="GHC.Core.Map.html#CoreMapG"><span class="hs-identifier hs-var">CoreMapG</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Data.TrieMap.html#GenMap"><span class="hs-identifier hs-type">GenMap</span></a></span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CoreMapX"><span class="hs-identifier hs-type">CoreMapX</span></a></span><span>
</span><span id="line-163"></span><span>
</span><span id="line-164"></span><span class="hs-comment">-- | @CoreMapX a@ is the base map from @DeBruijn CoreExpr@ to @a@, but without</span><span>
</span><span id="line-165"></span><span class="hs-comment">-- the 'GenMap' optimization.</span><span>
</span><span id="line-166"></span><span class="hs-keyword">data</span><span> </span><span id="CoreMapX"><span class="annot"><a href="GHC.Core.Map.html#CoreMapX"><span class="hs-identifier hs-var">CoreMapX</span></a></span></span><span> </span><span id="local-6989586621680857213"><span class="annot"><a href="#local-6989586621680857213"><span class="hs-identifier hs-type">a</span></a></span></span><span>
</span><span id="line-167"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span id="CM"><span class="annot"><a href="GHC.Core.Map.html#CM"><span class="hs-identifier hs-var">CM</span></a></span></span><span> </span><span class="hs-special">{</span><span> </span><span id="cm_var"><span class="annot"><span class="annottext">forall a. CoreMapX a -&gt; VarMap a
</span><a href="GHC.Core.Map.html#cm_var"><span class="hs-identifier hs-var hs-var">cm_var</span></a></span></span><span>   </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#VarMap"><span class="hs-identifier hs-type">VarMap</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857213"><span class="hs-identifier hs-type">a</span></a></span><span>
</span><span id="line-168"></span><span>       </span><span class="hs-special">,</span><span> </span><span id="cm_lit"><span class="annot"><span class="annottext">forall a. CoreMapX a -&gt; LiteralMap a
</span><a href="GHC.Core.Map.html#cm_lit"><span class="hs-identifier hs-var hs-var">cm_lit</span></a></span></span><span>   </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Data.TrieMap.html#LiteralMap"><span class="hs-identifier hs-type">LiteralMap</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857213"><span class="hs-identifier hs-type">a</span></a></span><span>
</span><span id="line-169"></span><span>       </span><span class="hs-special">,</span><span> </span><span id="cm_co"><span class="annot"><span class="annottext">forall a. CoreMapX a -&gt; CoercionMapG a
</span><a href="GHC.Core.Map.html#cm_co"><span class="hs-identifier hs-var hs-var">cm_co</span></a></span></span><span>    </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CoercionMapG"><span class="hs-identifier hs-type">CoercionMapG</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857213"><span class="hs-identifier hs-type">a</span></a></span><span>
</span><span id="line-170"></span><span>       </span><span class="hs-special">,</span><span> </span><span id="cm_type"><span class="annot"><span class="annottext">forall a. CoreMapX a -&gt; TypeMapG a
</span><a href="GHC.Core.Map.html#cm_type"><span class="hs-identifier hs-var hs-var">cm_type</span></a></span></span><span>  </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#TypeMapG"><span class="hs-identifier hs-type">TypeMapG</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857213"><span class="hs-identifier hs-type">a</span></a></span><span>
</span><span id="line-171"></span><span>       </span><span class="hs-special">,</span><span> </span><span id="cm_cast"><span class="annot"><span class="annottext">forall a. CoreMapX a -&gt; CoreMapG (CoercionMapG a)
</span><a href="GHC.Core.Map.html#cm_cast"><span class="hs-identifier hs-var hs-var">cm_cast</span></a></span></span><span>  </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CoreMapG"><span class="hs-identifier hs-type">CoreMapG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#CoercionMapG"><span class="hs-identifier hs-type">CoercionMapG</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857213"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-172"></span><span>       </span><span class="hs-special">,</span><span> </span><span id="cm_tick"><span class="annot"><span class="annottext">forall a. CoreMapX a -&gt; CoreMapG (TickishMap a)
</span><a href="GHC.Core.Map.html#cm_tick"><span class="hs-identifier hs-var hs-var">cm_tick</span></a></span></span><span>  </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CoreMapG"><span class="hs-identifier hs-type">CoreMapG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#TickishMap"><span class="hs-identifier hs-type">TickishMap</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857213"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-173"></span><span>       </span><span class="hs-special">,</span><span> </span><span id="cm_app"><span class="annot"><span class="annottext">forall a. CoreMapX a -&gt; CoreMapG (CoreMapG a)
</span><a href="GHC.Core.Map.html#cm_app"><span class="hs-identifier hs-var hs-var">cm_app</span></a></span></span><span>   </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CoreMapG"><span class="hs-identifier hs-type">CoreMapG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#CoreMapG"><span class="hs-identifier hs-type">CoreMapG</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857213"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-174"></span><span>       </span><span class="hs-special">,</span><span> </span><span id="cm_lam"><span class="annot"><span class="annottext">forall a. CoreMapX a -&gt; CoreMapG (BndrMap a)
</span><a href="GHC.Core.Map.html#cm_lam"><span class="hs-identifier hs-var hs-var">cm_lam</span></a></span></span><span>   </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CoreMapG"><span class="hs-identifier hs-type">CoreMapG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#BndrMap"><span class="hs-identifier hs-type">BndrMap</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857213"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span>    </span><span class="hs-comment">-- Note [Binders]</span><span>
</span><span id="line-175"></span><span>       </span><span class="hs-special">,</span><span> </span><span id="cm_letn"><span class="annot"><span class="annottext">forall a. CoreMapX a -&gt; CoreMapG (CoreMapG (BndrMap a))
</span><a href="GHC.Core.Map.html#cm_letn"><span class="hs-identifier hs-var hs-var">cm_letn</span></a></span></span><span>  </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CoreMapG"><span class="hs-identifier hs-type">CoreMapG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#CoreMapG"><span class="hs-identifier hs-type">CoreMapG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#BndrMap"><span class="hs-identifier hs-type">BndrMap</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857213"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-176"></span><span>       </span><span class="hs-special">,</span><span> </span><span id="cm_letr"><span class="annot"><span class="annottext">forall a.
CoreMapX a
-&gt; ListMap (GenMap CoreMapX) (CoreMapG (ListMap BndrMap a))
</span><a href="GHC.Core.Map.html#cm_letr"><span class="hs-identifier hs-var hs-var">cm_letr</span></a></span></span><span>  </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Data.TrieMap.html#ListMap"><span class="hs-identifier hs-type">ListMap</span></a></span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CoreMapG"><span class="hs-identifier hs-type">CoreMapG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#CoreMapG"><span class="hs-identifier hs-type">CoreMapG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Data.TrieMap.html#ListMap"><span class="hs-identifier hs-type">ListMap</span></a></span><span> </span><span class="annot"><a href="GHC.Core.Map.html#BndrMap"><span class="hs-identifier hs-type">BndrMap</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857213"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-177"></span><span>       </span><span class="hs-special">,</span><span> </span><span id="cm_case"><span class="annot"><span class="annottext">forall a. CoreMapX a -&gt; CoreMapG (ListMap AltMap a)
</span><a href="GHC.Core.Map.html#cm_case"><span class="hs-identifier hs-var hs-var">cm_case</span></a></span></span><span>  </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CoreMapG"><span class="hs-identifier hs-type">CoreMapG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Data.TrieMap.html#ListMap"><span class="hs-identifier hs-type">ListMap</span></a></span><span> </span><span class="annot"><a href="GHC.Core.Map.html#AltMap"><span class="hs-identifier hs-type">AltMap</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857213"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-178"></span><span>       </span><span class="hs-special">,</span><span> </span><span id="cm_ecase"><span class="annot"><span class="annottext">forall a. CoreMapX a -&gt; CoreMapG (TypeMapG a)
</span><a href="GHC.Core.Map.html#cm_ecase"><span class="hs-identifier hs-var hs-var">cm_ecase</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CoreMapG"><span class="hs-identifier hs-type">CoreMapG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#TypeMapG"><span class="hs-identifier hs-type">TypeMapG</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857213"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span>    </span><span class="hs-comment">-- Note [Empty case alternatives]</span><span>
</span><span id="line-179"></span><span>     </span><span class="hs-special">}</span><span>
</span><span id="line-180"></span><span>
</span><span id="line-181"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621680856732"><span class="annot"><span class="hs-identifier hs-type">Eq</span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#DeBruijn"><span class="hs-identifier hs-type">DeBruijn</span></a></span><span> </span><span class="annot"><a href="GHC.Core.html#CoreExpr"><span class="hs-identifier hs-type">CoreExpr</span></a></span><span class="hs-special">)</span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-182"></span><span>  </span><span class="annot"><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-type">D</span></a></span><span> </span><span id="local-6989586621680856707"><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856707"><span class="hs-identifier hs-var">env1</span></a></span></span><span> </span><span id="local-6989586621680856706"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856706"><span class="hs-identifier hs-var">e1</span></a></span></span><span> </span><span id="local-6989586621680856705"><span class="annot"><span class="annottext">== :: DeBruijn CoreExpr -&gt; DeBruijn CoreExpr -&gt; Bool
</span><span class="hs-operator hs-var hs-var hs-var hs-var">==</span></span></span><span> </span><span class="annot"><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-type">D</span></a></span><span> </span><span id="local-6989586621680856704"><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856704"><span class="hs-identifier hs-var">env2</span></a></span></span><span> </span><span id="local-6989586621680856703"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856703"><span class="hs-identifier hs-var">e2</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoreExpr -&gt; CoreExpr -&gt; Bool
</span><a href="#local-6989586621680856702"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856706"><span class="hs-identifier hs-var">e1</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856703"><span class="hs-identifier hs-var">e2</span></a></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-183"></span><span>    </span><span id="local-6989586621680856702"><span class="annot"><span class="annottext">go :: CoreExpr -&gt; CoreExpr -&gt; Bool
</span><a href="#local-6989586621680856702"><span class="hs-identifier hs-var hs-var">go</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Var"><span class="hs-identifier hs-type">Var</span></a></span><span> </span><span id="local-6989586621680856700"><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680856700"><span class="hs-identifier hs-var">v1</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Var"><span class="hs-identifier hs-type">Var</span></a></span><span> </span><span id="local-6989586621680856699"><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680856699"><span class="hs-identifier hs-var">v2</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-184"></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; Id -&gt; Maybe BoundVar
</span><a href="GHC.Core.Map.html#lookupCME"><span class="hs-identifier hs-var">lookupCME</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856707"><span class="hs-identifier hs-var">env1</span></a></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680856700"><span class="hs-identifier hs-var">v1</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; Id -&gt; Maybe BoundVar
</span><a href="GHC.Core.Map.html#lookupCME"><span class="hs-identifier hs-var">lookupCME</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856704"><span class="hs-identifier hs-var">env2</span></a></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680856699"><span class="hs-identifier hs-var">v2</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-185"></span><span>                            </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span id="local-6989586621680856698"><span class="annot"><span class="annottext">BoundVar
</span><a href="#local-6989586621680856698"><span class="hs-identifier hs-var">b1</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span id="local-6989586621680856697"><span class="annot"><span class="annottext">BoundVar
</span><a href="#local-6989586621680856697"><span class="hs-identifier hs-var">b2</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">BoundVar
</span><a href="#local-6989586621680856698"><span class="hs-identifier hs-var">b1</span></a></span><span> </span><span class="annot"><span class="annottext">BoundVar -&gt; BoundVar -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">BoundVar
</span><a href="#local-6989586621680856697"><span class="hs-identifier hs-var">b2</span></a></span><span>
</span><span id="line-186"></span><span>                            </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Maybe BoundVar
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Maybe BoundVar
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680856700"><span class="hs-identifier hs-var">v1</span></a></span><span> </span><span class="annot"><span class="annottext">Id -&gt; Id -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680856699"><span class="hs-identifier hs-var">v2</span></a></span><span>
</span><span id="line-187"></span><span>                            </span><span class="annot"><span class="annottext">(Maybe BoundVar, Maybe BoundVar)
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-188"></span><span>    </span><span class="annot"><a href="#local-6989586621680856702"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Lit"><span class="hs-identifier hs-type">Lit</span></a></span><span> </span><span id="local-6989586621680856695"><span class="annot"><span class="annottext">Literal
</span><a href="#local-6989586621680856695"><span class="hs-identifier hs-var">lit1</span></a></span></span><span class="hs-special">)</span><span>    </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Lit"><span class="hs-identifier hs-type">Lit</span></a></span><span> </span><span id="local-6989586621680856694"><span class="annot"><span class="annottext">Literal
</span><a href="#local-6989586621680856694"><span class="hs-identifier hs-var">lit2</span></a></span></span><span class="hs-special">)</span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Literal
</span><a href="#local-6989586621680856695"><span class="hs-identifier hs-var">lit1</span></a></span><span> </span><span class="annot"><span class="annottext">Literal -&gt; Literal -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">Literal
</span><a href="#local-6989586621680856694"><span class="hs-identifier hs-var">lit2</span></a></span><span>
</span><span id="line-189"></span><span>    </span><span class="annot"><a href="#local-6989586621680856702"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span> </span><span id="local-6989586621680856692"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680856692"><span class="hs-identifier hs-var">t1</span></a></span></span><span class="hs-special">)</span><span>    </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span> </span><span id="local-6989586621680856691"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680856691"><span class="hs-identifier hs-var">t2</span></a></span></span><span class="hs-special">)</span><span>        </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; Type -&gt; DeBruijn Type
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856707"><span class="hs-identifier hs-var">env1</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680856692"><span class="hs-identifier hs-var">t1</span></a></span><span> </span><span class="annot"><span class="annottext">DeBruijn Type -&gt; DeBruijn Type -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; Type -&gt; DeBruijn Type
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856704"><span class="hs-identifier hs-var">env2</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680856691"><span class="hs-identifier hs-var">t2</span></a></span><span>
</span><span id="line-190"></span><span>    </span><span class="annot"><a href="#local-6989586621680856702"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Coercion"><span class="hs-identifier hs-type">Coercion</span></a></span><span> </span><span id="local-6989586621680856689"><span class="annot"><span class="annottext">Coercion
</span><a href="#local-6989586621680856689"><span class="hs-identifier hs-var">co1</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Coercion"><span class="hs-identifier hs-type">Coercion</span></a></span><span> </span><span id="local-6989586621680856688"><span class="annot"><span class="annottext">Coercion
</span><a href="#local-6989586621680856688"><span class="hs-identifier hs-var">co2</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; Coercion -&gt; DeBruijn Coercion
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856707"><span class="hs-identifier hs-var">env1</span></a></span><span> </span><span class="annot"><span class="annottext">Coercion
</span><a href="#local-6989586621680856689"><span class="hs-identifier hs-var">co1</span></a></span><span> </span><span class="annot"><span class="annottext">DeBruijn Coercion -&gt; DeBruijn Coercion -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; Coercion -&gt; DeBruijn Coercion
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856704"><span class="hs-identifier hs-var">env2</span></a></span><span> </span><span class="annot"><span class="annottext">Coercion
</span><a href="#local-6989586621680856688"><span class="hs-identifier hs-var">co2</span></a></span><span>
</span><span id="line-191"></span><span>    </span><span class="annot"><a href="#local-6989586621680856702"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Cast"><span class="hs-identifier hs-type">Cast</span></a></span><span> </span><span id="local-6989586621680856686"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856686"><span class="hs-identifier hs-var">e1</span></a></span></span><span> </span><span id="local-6989586621680856685"><span class="annot"><span class="annottext">Coercion
</span><a href="#local-6989586621680856685"><span class="hs-identifier hs-var">co1</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Cast"><span class="hs-identifier hs-type">Cast</span></a></span><span> </span><span id="local-6989586621680856684"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856684"><span class="hs-identifier hs-var">e2</span></a></span></span><span> </span><span id="local-6989586621680856683"><span class="annot"><span class="annottext">Coercion
</span><a href="#local-6989586621680856683"><span class="hs-identifier hs-var">co2</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; Coercion -&gt; DeBruijn Coercion
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856707"><span class="hs-identifier hs-var">env1</span></a></span><span> </span><span class="annot"><span class="annottext">Coercion
</span><a href="#local-6989586621680856685"><span class="hs-identifier hs-var">co1</span></a></span><span> </span><span class="annot"><span class="annottext">DeBruijn Coercion -&gt; DeBruijn Coercion -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; Coercion -&gt; DeBruijn Coercion
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856704"><span class="hs-identifier hs-var">env2</span></a></span><span> </span><span class="annot"><span class="annottext">Coercion
</span><a href="#local-6989586621680856683"><span class="hs-identifier hs-var">co2</span></a></span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; Bool
</span><span class="hs-operator hs-var">&amp;&amp;</span></span><span> </span><span class="annot"><span class="annottext">CoreExpr -&gt; CoreExpr -&gt; Bool
</span><a href="#local-6989586621680856702"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856686"><span class="hs-identifier hs-var">e1</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856684"><span class="hs-identifier hs-var">e2</span></a></span><span>
</span><span id="line-192"></span><span>    </span><span class="annot"><a href="#local-6989586621680856702"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#App"><span class="hs-identifier hs-type">App</span></a></span><span> </span><span id="local-6989586621680856680"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856680"><span class="hs-identifier hs-var">f1</span></a></span></span><span> </span><span id="local-6989586621680856679"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856679"><span class="hs-identifier hs-var">a1</span></a></span></span><span class="hs-special">)</span><span>   </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#App"><span class="hs-identifier hs-type">App</span></a></span><span> </span><span id="local-6989586621680856678"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856678"><span class="hs-identifier hs-var">f2</span></a></span></span><span> </span><span id="local-6989586621680856677"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856677"><span class="hs-identifier hs-var">a2</span></a></span></span><span class="hs-special">)</span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoreExpr -&gt; CoreExpr -&gt; Bool
</span><a href="#local-6989586621680856702"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856680"><span class="hs-identifier hs-var">f1</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856678"><span class="hs-identifier hs-var">f2</span></a></span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; Bool
</span><span class="hs-operator hs-var">&amp;&amp;</span></span><span> </span><span class="annot"><span class="annottext">CoreExpr -&gt; CoreExpr -&gt; Bool
</span><a href="#local-6989586621680856702"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856679"><span class="hs-identifier hs-var">a1</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856677"><span class="hs-identifier hs-var">a2</span></a></span><span>
</span><span id="line-193"></span><span>    </span><span class="hs-comment">-- This seems a bit dodgy, see 'eqTickish'</span><span>
</span><span id="line-194"></span><span>    </span><span class="annot"><a href="#local-6989586621680856702"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Tick"><span class="hs-identifier hs-type">Tick</span></a></span><span> </span><span id="local-6989586621680856675"><span class="annot"><span class="annottext">Tickish Id
</span><a href="#local-6989586621680856675"><span class="hs-identifier hs-var">n1</span></a></span></span><span> </span><span id="local-6989586621680856674"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856674"><span class="hs-identifier hs-var">e1</span></a></span></span><span class="hs-special">)</span><span>  </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Tick"><span class="hs-identifier hs-type">Tick</span></a></span><span> </span><span id="local-6989586621680856673"><span class="annot"><span class="annottext">Tickish Id
</span><a href="#local-6989586621680856673"><span class="hs-identifier hs-var">n2</span></a></span></span><span> </span><span id="local-6989586621680856672"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856672"><span class="hs-identifier hs-var">e2</span></a></span></span><span class="hs-special">)</span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Tickish Id
</span><a href="#local-6989586621680856675"><span class="hs-identifier hs-var">n1</span></a></span><span> </span><span class="annot"><span class="annottext">Tickish Id -&gt; Tickish Id -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">Tickish Id
</span><a href="#local-6989586621680856673"><span class="hs-identifier hs-var">n2</span></a></span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; Bool
</span><span class="hs-operator hs-var">&amp;&amp;</span></span><span> </span><span class="annot"><span class="annottext">CoreExpr -&gt; CoreExpr -&gt; Bool
</span><a href="#local-6989586621680856702"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856674"><span class="hs-identifier hs-var">e1</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856672"><span class="hs-identifier hs-var">e2</span></a></span><span>
</span><span id="line-195"></span><span>
</span><span id="line-196"></span><span>    </span><span class="annot"><a href="#local-6989586621680856702"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Lam"><span class="hs-identifier hs-type">Lam</span></a></span><span> </span><span id="local-6989586621680856670"><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680856670"><span class="hs-identifier hs-var">b1</span></a></span></span><span> </span><span id="local-6989586621680856669"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856669"><span class="hs-identifier hs-var">e1</span></a></span></span><span class="hs-special">)</span><span>  </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Lam"><span class="hs-identifier hs-type">Lam</span></a></span><span> </span><span id="local-6989586621680856668"><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680856668"><span class="hs-identifier hs-var">b2</span></a></span></span><span> </span><span id="local-6989586621680856667"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856667"><span class="hs-identifier hs-var">e2</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-197"></span><span>      </span><span class="hs-glyph">=</span><span>  </span><span class="annot"><span class="annottext">CmEnv -&gt; Type -&gt; DeBruijn Type
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856707"><span class="hs-identifier hs-var">env1</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Id -&gt; Type
</span><a href="GHC.Types.Var.html#varType"><span class="hs-identifier hs-var hs-var">varType</span></a></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680856670"><span class="hs-identifier hs-var">b1</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">DeBruijn Type -&gt; DeBruijn Type -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; Type -&gt; DeBruijn Type
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856704"><span class="hs-identifier hs-var">env2</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Id -&gt; Type
</span><a href="GHC.Types.Var.html#varType"><span class="hs-identifier hs-var hs-var">varType</span></a></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680856668"><span class="hs-identifier hs-var">b2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-198"></span><span>      </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; Bool
</span><span class="hs-operator hs-var">&amp;&amp;</span></span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; Maybe Type -&gt; DeBruijn (Maybe Type)
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856707"><span class="hs-identifier hs-var">env1</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Id -&gt; Maybe Type
</span><a href="GHC.Types.Var.html#varMultMaybe"><span class="hs-identifier hs-var">varMultMaybe</span></a></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680856670"><span class="hs-identifier hs-var">b1</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">DeBruijn (Maybe Type) -&gt; DeBruijn (Maybe Type) -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; Maybe Type -&gt; DeBruijn (Maybe Type)
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856704"><span class="hs-identifier hs-var">env2</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Id -&gt; Maybe Type
</span><a href="GHC.Types.Var.html#varMultMaybe"><span class="hs-identifier hs-var">varMultMaybe</span></a></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680856668"><span class="hs-identifier hs-var">b2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-199"></span><span>      </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; Bool
</span><span class="hs-operator hs-var">&amp;&amp;</span></span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; CoreExpr -&gt; DeBruijn CoreExpr
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; Id -&gt; CmEnv
</span><a href="GHC.Core.Map.html#extendCME"><span class="hs-identifier hs-var">extendCME</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856707"><span class="hs-identifier hs-var">env1</span></a></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680856670"><span class="hs-identifier hs-var">b1</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856669"><span class="hs-identifier hs-var">e1</span></a></span><span> </span><span class="annot"><span class="annottext">DeBruijn CoreExpr -&gt; DeBruijn CoreExpr -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; CoreExpr -&gt; DeBruijn CoreExpr
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; Id -&gt; CmEnv
</span><a href="GHC.Core.Map.html#extendCME"><span class="hs-identifier hs-var">extendCME</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856704"><span class="hs-identifier hs-var">env2</span></a></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680856668"><span class="hs-identifier hs-var">b2</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856667"><span class="hs-identifier hs-var">e2</span></a></span><span>
</span><span id="line-200"></span><span>
</span><span id="line-201"></span><span>    </span><span class="annot"><a href="#local-6989586621680856702"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Let"><span class="hs-identifier hs-type">Let</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#NonRec"><span class="hs-identifier hs-type">NonRec</span></a></span><span> </span><span id="local-6989586621680856661"><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680856661"><span class="hs-identifier hs-var">v1</span></a></span></span><span> </span><span id="local-6989586621680856660"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856660"><span class="hs-identifier hs-var">r1</span></a></span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621680856659"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856659"><span class="hs-identifier hs-var">e1</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Let"><span class="hs-identifier hs-type">Let</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#NonRec"><span class="hs-identifier hs-type">NonRec</span></a></span><span> </span><span id="local-6989586621680856658"><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680856658"><span class="hs-identifier hs-var">v2</span></a></span></span><span> </span><span id="local-6989586621680856657"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856657"><span class="hs-identifier hs-var">r2</span></a></span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621680856656"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856656"><span class="hs-identifier hs-var">e2</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-202"></span><span>      </span><span class="hs-glyph">=</span><span>  </span><span class="annot"><span class="annottext">CoreExpr -&gt; CoreExpr -&gt; Bool
</span><a href="#local-6989586621680856702"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856660"><span class="hs-identifier hs-var">r1</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856657"><span class="hs-identifier hs-var">r2</span></a></span><span>
</span><span id="line-203"></span><span>      </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; Bool
</span><span class="hs-operator hs-var">&amp;&amp;</span></span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; CoreExpr -&gt; DeBruijn CoreExpr
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; Id -&gt; CmEnv
</span><a href="GHC.Core.Map.html#extendCME"><span class="hs-identifier hs-var">extendCME</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856707"><span class="hs-identifier hs-var">env1</span></a></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680856661"><span class="hs-identifier hs-var">v1</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856659"><span class="hs-identifier hs-var">e1</span></a></span><span> </span><span class="annot"><span class="annottext">DeBruijn CoreExpr -&gt; DeBruijn CoreExpr -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; CoreExpr -&gt; DeBruijn CoreExpr
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; Id -&gt; CmEnv
</span><a href="GHC.Core.Map.html#extendCME"><span class="hs-identifier hs-var">extendCME</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856704"><span class="hs-identifier hs-var">env2</span></a></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680856658"><span class="hs-identifier hs-var">v2</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856656"><span class="hs-identifier hs-var">e2</span></a></span><span>
</span><span id="line-204"></span><span>
</span><span id="line-205"></span><span>    </span><span class="annot"><a href="#local-6989586621680856702"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Let"><span class="hs-identifier hs-type">Let</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Rec"><span class="hs-identifier hs-type">Rec</span></a></span><span> </span><span id="local-6989586621680856654"><span class="annot"><span class="annottext">[(Id, CoreExpr)]
</span><a href="#local-6989586621680856654"><span class="hs-identifier hs-var">ps1</span></a></span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621680856653"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856653"><span class="hs-identifier hs-var">e1</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Let"><span class="hs-identifier hs-type">Let</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Rec"><span class="hs-identifier hs-type">Rec</span></a></span><span> </span><span id="local-6989586621680856652"><span class="annot"><span class="annottext">[(Id, CoreExpr)]
</span><a href="#local-6989586621680856652"><span class="hs-identifier hs-var">ps2</span></a></span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621680856651"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856651"><span class="hs-identifier hs-var">e2</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-206"></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[(Id, CoreExpr)] -&gt; [(Id, CoreExpr)] -&gt; Bool
forall a b. [a] -&gt; [b] -&gt; Bool
</span><a href="GHC.Utils.Misc.html#equalLength"><span class="hs-identifier hs-var">equalLength</span></a></span><span> </span><span class="annot"><span class="annottext">[(Id, CoreExpr)]
</span><a href="#local-6989586621680856654"><span class="hs-identifier hs-var">ps1</span></a></span><span> </span><span class="annot"><span class="annottext">[(Id, CoreExpr)]
</span><a href="#local-6989586621680856652"><span class="hs-identifier hs-var">ps2</span></a></span><span>
</span><span id="line-207"></span><span>      </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; Bool
</span><span class="hs-operator hs-var">&amp;&amp;</span></span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; [CoreExpr] -&gt; DeBruijn [CoreExpr]
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856649"><span class="hs-identifier hs-var">env1'</span></a></span><span> </span><span class="annot"><span class="annottext">[CoreExpr]
</span><a href="#local-6989586621680856648"><span class="hs-identifier hs-var">rs1</span></a></span><span> </span><span class="annot"><span class="annottext">DeBruijn [CoreExpr] -&gt; DeBruijn [CoreExpr] -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; [CoreExpr] -&gt; DeBruijn [CoreExpr]
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856647"><span class="hs-identifier hs-var">env2'</span></a></span><span> </span><span class="annot"><span class="annottext">[CoreExpr]
</span><a href="#local-6989586621680856646"><span class="hs-identifier hs-var">rs2</span></a></span><span>
</span><span id="line-208"></span><span>      </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; Bool
</span><span class="hs-operator hs-var">&amp;&amp;</span></span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; CoreExpr -&gt; DeBruijn CoreExpr
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856649"><span class="hs-identifier hs-var">env1'</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856653"><span class="hs-identifier hs-var">e1</span></a></span><span>  </span><span class="annot"><span class="annottext">DeBruijn CoreExpr -&gt; DeBruijn CoreExpr -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; CoreExpr -&gt; DeBruijn CoreExpr
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856647"><span class="hs-identifier hs-var">env2'</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856651"><span class="hs-identifier hs-var">e2</span></a></span><span>
</span><span id="line-209"></span><span>      </span><span class="hs-keyword">where</span><span>
</span><span id="line-210"></span><span>        </span><span class="hs-special">(</span><span id="local-6989586621680856645"><span class="annot"><span class="annottext">[Id]
</span><a href="#local-6989586621680856645"><span class="hs-identifier hs-var">bs1</span></a></span></span><span class="hs-special">,</span><span id="local-6989586621680856648"><span class="annot"><span class="annottext">[CoreExpr]
</span><a href="#local-6989586621680856648"><span class="hs-identifier hs-var">rs1</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[(Id, CoreExpr)] -&gt; ([Id], [CoreExpr])
forall a b. [(a, b)] -&gt; ([a], [b])
</span><a href="../../base/src/GHC.List.html#unzip"><span class="hs-identifier hs-var">unzip</span></a></span><span> </span><span class="annot"><span class="annottext">[(Id, CoreExpr)]
</span><a href="#local-6989586621680856654"><span class="hs-identifier hs-var">ps1</span></a></span><span>
</span><span id="line-211"></span><span>        </span><span class="hs-special">(</span><span id="local-6989586621680856643"><span class="annot"><span class="annottext">[Id]
</span><a href="#local-6989586621680856643"><span class="hs-identifier hs-var">bs2</span></a></span></span><span class="hs-special">,</span><span id="local-6989586621680856646"><span class="annot"><span class="annottext">[CoreExpr]
</span><a href="#local-6989586621680856646"><span class="hs-identifier hs-var">rs2</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[(Id, CoreExpr)] -&gt; ([Id], [CoreExpr])
forall a b. [(a, b)] -&gt; ([a], [b])
</span><a href="../../base/src/GHC.List.html#unzip"><span class="hs-identifier hs-var">unzip</span></a></span><span> </span><span class="annot"><span class="annottext">[(Id, CoreExpr)]
</span><a href="#local-6989586621680856652"><span class="hs-identifier hs-var">ps2</span></a></span><span>
</span><span id="line-212"></span><span>        </span><span id="local-6989586621680856649"><span class="annot"><span class="annottext">env1' :: CmEnv
</span><a href="#local-6989586621680856649"><span class="hs-identifier hs-var hs-var">env1'</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; [Id] -&gt; CmEnv
</span><a href="GHC.Core.Map.html#extendCMEs"><span class="hs-identifier hs-var">extendCMEs</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856707"><span class="hs-identifier hs-var">env1</span></a></span><span> </span><span class="annot"><span class="annottext">[Id]
</span><a href="#local-6989586621680856645"><span class="hs-identifier hs-var">bs1</span></a></span><span>
</span><span id="line-213"></span><span>        </span><span id="local-6989586621680856647"><span class="annot"><span class="annottext">env2' :: CmEnv
</span><a href="#local-6989586621680856647"><span class="hs-identifier hs-var hs-var">env2'</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; [Id] -&gt; CmEnv
</span><a href="GHC.Core.Map.html#extendCMEs"><span class="hs-identifier hs-var">extendCMEs</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856704"><span class="hs-identifier hs-var">env2</span></a></span><span> </span><span class="annot"><span class="annottext">[Id]
</span><a href="#local-6989586621680856643"><span class="hs-identifier hs-var">bs2</span></a></span><span>
</span><span id="line-214"></span><span>
</span><span id="line-215"></span><span>    </span><span class="annot"><a href="#local-6989586621680856702"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Case"><span class="hs-identifier hs-type">Case</span></a></span><span> </span><span id="local-6989586621680856640"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856640"><span class="hs-identifier hs-var">e1</span></a></span></span><span> </span><span id="local-6989586621680856639"><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680856639"><span class="hs-identifier hs-var">b1</span></a></span></span><span> </span><span id="local-6989586621680856638"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680856638"><span class="hs-identifier hs-var">t1</span></a></span></span><span> </span><span id="local-6989586621680856637"><span class="annot"><span class="annottext">[CoreAlt]
</span><a href="#local-6989586621680856637"><span class="hs-identifier hs-var">a1</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Case"><span class="hs-identifier hs-type">Case</span></a></span><span> </span><span id="local-6989586621680856636"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856636"><span class="hs-identifier hs-var">e2</span></a></span></span><span> </span><span id="local-6989586621680856635"><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680856635"><span class="hs-identifier hs-var">b2</span></a></span></span><span> </span><span id="local-6989586621680856634"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680856634"><span class="hs-identifier hs-var">t2</span></a></span></span><span> </span><span id="local-6989586621680856633"><span class="annot"><span class="annottext">[CoreAlt]
</span><a href="#local-6989586621680856633"><span class="hs-identifier hs-var">a2</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-216"></span><span>      </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">[CoreAlt] -&gt; Bool
forall (t :: * -&gt; *) a. Foldable t =&gt; t a -&gt; Bool
</span><a href="../../base/src/Data.Foldable.html#null"><span class="hs-identifier hs-var">null</span></a></span><span> </span><span class="annot"><span class="annottext">[CoreAlt]
</span><a href="#local-6989586621680856637"><span class="hs-identifier hs-var">a1</span></a></span><span>   </span><span class="hs-comment">-- See Note [Empty case alternatives]</span><span>
</span><span id="line-217"></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[CoreAlt] -&gt; Bool
forall (t :: * -&gt; *) a. Foldable t =&gt; t a -&gt; Bool
</span><a href="../../base/src/Data.Foldable.html#null"><span class="hs-identifier hs-var">null</span></a></span><span> </span><span class="annot"><span class="annottext">[CoreAlt]
</span><a href="#local-6989586621680856633"><span class="hs-identifier hs-var">a2</span></a></span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; Bool
</span><span class="hs-operator hs-var">&amp;&amp;</span></span><span> </span><span class="annot"><span class="annottext">CoreExpr -&gt; CoreExpr -&gt; Bool
</span><a href="#local-6989586621680856702"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856640"><span class="hs-identifier hs-var">e1</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856636"><span class="hs-identifier hs-var">e2</span></a></span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; Bool
</span><span class="hs-operator hs-var">&amp;&amp;</span></span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; Type -&gt; DeBruijn Type
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856707"><span class="hs-identifier hs-var">env1</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680856638"><span class="hs-identifier hs-var">t1</span></a></span><span> </span><span class="annot"><span class="annottext">DeBruijn Type -&gt; DeBruijn Type -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; Type -&gt; DeBruijn Type
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856704"><span class="hs-identifier hs-var">env2</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680856634"><span class="hs-identifier hs-var">t2</span></a></span><span>
</span><span id="line-218"></span><span>      </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>
</span><span id="line-219"></span><span>      </span><span class="hs-glyph">=</span><span>  </span><span class="annot"><span class="annottext">CoreExpr -&gt; CoreExpr -&gt; Bool
</span><a href="#local-6989586621680856702"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856640"><span class="hs-identifier hs-var">e1</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856636"><span class="hs-identifier hs-var">e2</span></a></span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; Bool
</span><span class="hs-operator hs-var">&amp;&amp;</span></span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; [CoreAlt] -&gt; DeBruijn [CoreAlt]
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; Id -&gt; CmEnv
</span><a href="GHC.Core.Map.html#extendCME"><span class="hs-identifier hs-var">extendCME</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856707"><span class="hs-identifier hs-var">env1</span></a></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680856639"><span class="hs-identifier hs-var">b1</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[CoreAlt]
</span><a href="#local-6989586621680856637"><span class="hs-identifier hs-var">a1</span></a></span><span> </span><span class="annot"><span class="annottext">DeBruijn [CoreAlt] -&gt; DeBruijn [CoreAlt] -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; [CoreAlt] -&gt; DeBruijn [CoreAlt]
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; Id -&gt; CmEnv
</span><a href="GHC.Core.Map.html#extendCME"><span class="hs-identifier hs-var">extendCME</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856704"><span class="hs-identifier hs-var">env2</span></a></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680856635"><span class="hs-identifier hs-var">b2</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[CoreAlt]
</span><a href="#local-6989586621680856633"><span class="hs-identifier hs-var">a2</span></a></span><span>
</span><span id="line-220"></span><span>
</span><span id="line-221"></span><span>    </span><span class="annot"><a href="#local-6989586621680856702"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-222"></span><span>
</span><span id="line-223"></span><span id="local-6989586621680857177"><span class="annot"><a href="GHC.Core.Map.html#emptyE"><span class="hs-identifier hs-type">emptyE</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CoreMapX"><span class="hs-identifier hs-type">CoreMapX</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857177"><span class="hs-identifier hs-type">a</span></a></span></span><span>
</span><span id="line-224"></span><span id="emptyE"><span class="annot"><span class="annottext">emptyE :: forall a. CoreMapX a
</span><a href="GHC.Core.Map.html#emptyE"><span class="hs-identifier hs-var hs-var">emptyE</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CM :: forall a.
VarMap a
-&gt; LiteralMap a
-&gt; CoercionMapG a
-&gt; TypeMapG a
-&gt; CoreMapG (CoercionMapG a)
-&gt; CoreMapG (TickishMap a)
-&gt; CoreMapG (CoreMapG a)
-&gt; CoreMapG (BndrMap a)
-&gt; CoreMapG (CoreMapG (BndrMap a))
-&gt; ListMap (GenMap CoreMapX) (CoreMapG (ListMap BndrMap a))
-&gt; CoreMapG (ListMap AltMap a)
-&gt; CoreMapG (TypeMapG a)
-&gt; CoreMapX a
</span><a href="GHC.Core.Map.html#CM"><span class="hs-identifier hs-type">CM</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">cm_var :: VarMap a
</span><a href="GHC.Core.Map.html#cm_var"><span class="hs-identifier hs-var">cm_var</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">VarMap a
forall (m :: * -&gt; *) a. TrieMap m =&gt; m a
</span><a href="GHC.Data.TrieMap.html#emptyTM"><span class="hs-identifier hs-var">emptyTM</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">cm_lit :: LiteralMap a
</span><a href="GHC.Core.Map.html#cm_lit"><span class="hs-identifier hs-var">cm_lit</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">LiteralMap a
forall (m :: * -&gt; *) a. TrieMap m =&gt; m a
</span><a href="GHC.Data.TrieMap.html#emptyTM"><span class="hs-identifier hs-var">emptyTM</span></a></span><span>
</span><span id="line-225"></span><span>            </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">cm_co :: CoercionMapG a
</span><a href="GHC.Core.Map.html#cm_co"><span class="hs-identifier hs-var">cm_co</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoercionMapG a
forall (m :: * -&gt; *) a. TrieMap m =&gt; m a
</span><a href="GHC.Data.TrieMap.html#emptyTM"><span class="hs-identifier hs-var">emptyTM</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">cm_type :: TypeMapG a
</span><a href="GHC.Core.Map.html#cm_type"><span class="hs-identifier hs-var">cm_type</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeMapG a
forall (m :: * -&gt; *) a. TrieMap m =&gt; m a
</span><a href="GHC.Data.TrieMap.html#emptyTM"><span class="hs-identifier hs-var">emptyTM</span></a></span><span>
</span><span id="line-226"></span><span>            </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">cm_cast :: CoreMapG (CoercionMapG a)
</span><a href="GHC.Core.Map.html#cm_cast"><span class="hs-identifier hs-var">cm_cast</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoreMapG (CoercionMapG a)
forall (m :: * -&gt; *) a. TrieMap m =&gt; m a
</span><a href="GHC.Data.TrieMap.html#emptyTM"><span class="hs-identifier hs-var">emptyTM</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">cm_app :: CoreMapG (CoreMapG a)
</span><a href="GHC.Core.Map.html#cm_app"><span class="hs-identifier hs-var">cm_app</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoreMapG (CoreMapG a)
forall (m :: * -&gt; *) a. TrieMap m =&gt; m a
</span><a href="GHC.Data.TrieMap.html#emptyTM"><span class="hs-identifier hs-var">emptyTM</span></a></span><span>
</span><span id="line-227"></span><span>            </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">cm_lam :: CoreMapG (BndrMap a)
</span><a href="GHC.Core.Map.html#cm_lam"><span class="hs-identifier hs-var">cm_lam</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoreMapG (BndrMap a)
forall (m :: * -&gt; *) a. TrieMap m =&gt; m a
</span><a href="GHC.Data.TrieMap.html#emptyTM"><span class="hs-identifier hs-var">emptyTM</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">cm_letn :: CoreMapG (CoreMapG (BndrMap a))
</span><a href="GHC.Core.Map.html#cm_letn"><span class="hs-identifier hs-var">cm_letn</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoreMapG (CoreMapG (BndrMap a))
forall (m :: * -&gt; *) a. TrieMap m =&gt; m a
</span><a href="GHC.Data.TrieMap.html#emptyTM"><span class="hs-identifier hs-var">emptyTM</span></a></span><span>
</span><span id="line-228"></span><span>            </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">cm_letr :: ListMap (GenMap CoreMapX) (CoreMapG (ListMap BndrMap a))
</span><a href="GHC.Core.Map.html#cm_letr"><span class="hs-identifier hs-var">cm_letr</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">ListMap (GenMap CoreMapX) (CoreMapG (ListMap BndrMap a))
forall (m :: * -&gt; *) a. TrieMap m =&gt; m a
</span><a href="GHC.Data.TrieMap.html#emptyTM"><span class="hs-identifier hs-var">emptyTM</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">cm_case :: CoreMapG (ListMap AltMap a)
</span><a href="GHC.Core.Map.html#cm_case"><span class="hs-identifier hs-var">cm_case</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoreMapG (ListMap AltMap a)
forall (m :: * -&gt; *) a. TrieMap m =&gt; m a
</span><a href="GHC.Data.TrieMap.html#emptyTM"><span class="hs-identifier hs-var">emptyTM</span></a></span><span>
</span><span id="line-229"></span><span>            </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">cm_ecase :: CoreMapG (TypeMapG a)
</span><a href="GHC.Core.Map.html#cm_ecase"><span class="hs-identifier hs-var">cm_ecase</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoreMapG (TypeMapG a)
forall (m :: * -&gt; *) a. TrieMap m =&gt; m a
</span><a href="GHC.Data.TrieMap.html#emptyTM"><span class="hs-identifier hs-var">emptyTM</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">cm_tick :: CoreMapG (TickishMap a)
</span><a href="GHC.Core.Map.html#cm_tick"><span class="hs-identifier hs-var">cm_tick</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoreMapG (TickishMap a)
forall (m :: * -&gt; *) a. TrieMap m =&gt; m a
</span><a href="GHC.Data.TrieMap.html#emptyTM"><span class="hs-identifier hs-var">emptyTM</span></a></span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-230"></span><span>
</span><span id="line-231"></span><span class="hs-keyword">instance</span><span> </span><span class="annot"><a href="GHC.Data.TrieMap.html#TrieMap"><span class="hs-identifier hs-type">TrieMap</span></a></span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CoreMapX"><span class="hs-identifier hs-type">CoreMapX</span></a></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-232"></span><span>   </span><span class="hs-keyword">type</span><span> </span><span id="Key"><span class="annot"><a href="GHC.Data.TrieMap.html#Key"><span class="hs-identifier hs-var">Key</span></a></span></span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CoreMapX"><span class="hs-identifier hs-type">CoreMapX</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#DeBruijn"><span class="hs-identifier hs-type">DeBruijn</span></a></span><span> </span><span class="annot"><a href="GHC.Core.html#CoreExpr"><span class="hs-identifier hs-type">CoreExpr</span></a></span><span>
</span><span id="line-233"></span><span>   </span><span id="local-6989586621680856597"><span class="annot"><span class="annottext">emptyTM :: forall a. CoreMapX a
</span><a href="#local-6989586621680856597"><span class="hs-identifier hs-var hs-var hs-var hs-var">emptyTM</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoreMapX a
forall a. CoreMapX a
</span><a href="GHC.Core.Map.html#emptyE"><span class="hs-identifier hs-var">emptyE</span></a></span><span>
</span><span id="line-234"></span><span>   </span><span id="local-6989586621680856596"><span class="annot"><span class="annottext">lookupTM :: forall b. Key CoreMapX -&gt; CoreMapX b -&gt; Maybe b
</span><a href="#local-6989586621680856596"><span class="hs-identifier hs-var hs-var hs-var hs-var">lookupTM</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Key CoreMapX -&gt; CoreMapX b -&gt; Maybe b
forall a. DeBruijn CoreExpr -&gt; CoreMapX a -&gt; Maybe a
</span><a href="GHC.Core.Map.html#lkE"><span class="hs-identifier hs-var">lkE</span></a></span><span>
</span><span id="line-235"></span><span>   </span><span id="local-6989586621680856594"><span class="annot"><span class="annottext">alterTM :: forall b. Key CoreMapX -&gt; XT b -&gt; CoreMapX b -&gt; CoreMapX b
</span><a href="#local-6989586621680856594"><span class="hs-identifier hs-var hs-var hs-var hs-var">alterTM</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Key CoreMapX -&gt; (Maybe b -&gt; Maybe b) -&gt; CoreMapX b -&gt; CoreMapX b
forall a. DeBruijn CoreExpr -&gt; XT a -&gt; CoreMapX a -&gt; CoreMapX a
</span><a href="GHC.Core.Map.html#xtE"><span class="hs-identifier hs-var">xtE</span></a></span><span>
</span><span id="line-236"></span><span>   </span><span id="local-6989586621680856592"><span class="annot"><span class="annottext">foldTM :: forall a b. (a -&gt; b -&gt; b) -&gt; CoreMapX a -&gt; b -&gt; b
</span><a href="#local-6989586621680856592"><span class="hs-identifier hs-var hs-var hs-var hs-var">foldTM</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(a -&gt; b -&gt; b) -&gt; CoreMapX a -&gt; b -&gt; b
forall a b. (a -&gt; b -&gt; b) -&gt; CoreMapX a -&gt; b -&gt; b
</span><a href="GHC.Core.Map.html#fdE"><span class="hs-identifier hs-var">fdE</span></a></span><span>
</span><span id="line-237"></span><span>   </span><span id="local-6989586621680856590"><span class="annot"><span class="annottext">mapTM :: forall a b. (a -&gt; b) -&gt; CoreMapX a -&gt; CoreMapX b
</span><a href="#local-6989586621680856590"><span class="hs-identifier hs-var hs-var hs-var hs-var">mapTM</span></a></span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(a -&gt; b) -&gt; CoreMapX a -&gt; CoreMapX b
forall a b. (a -&gt; b) -&gt; CoreMapX a -&gt; CoreMapX b
</span><a href="GHC.Core.Map.html#mapE"><span class="hs-identifier hs-var">mapE</span></a></span><span>
</span><span id="line-238"></span><span>
</span><span id="line-239"></span><span class="hs-comment">--------------------------</span><span>
</span><span id="line-240"></span><span id="local-6989586621680856587"><span id="local-6989586621680856588"><span class="annot"><a href="GHC.Core.Map.html#mapE"><span class="hs-identifier hs-type">mapE</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621680856588"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-glyph">-&gt;</span><span class="annot"><a href="#local-6989586621680856587"><span class="hs-identifier hs-type">b</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CoreMapX"><span class="hs-identifier hs-type">CoreMapX</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680856588"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CoreMapX"><span class="hs-identifier hs-type">CoreMapX</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680856587"><span class="hs-identifier hs-type">b</span></a></span></span></span><span>
</span><span id="line-241"></span><span id="mapE"><span class="annot"><span class="annottext">mapE :: forall a b. (a -&gt; b) -&gt; CoreMapX a -&gt; CoreMapX b
</span><a href="GHC.Core.Map.html#mapE"><span class="hs-identifier hs-var hs-var">mapE</span></a></span></span><span> </span><span id="local-6989586621680856547"><span class="annot"><span class="annottext">a -&gt; b
</span><a href="#local-6989586621680856547"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#CM"><span class="hs-identifier hs-type">CM</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">cm_var :: forall a. CoreMapX a -&gt; VarMap a
</span><a href="GHC.Core.Map.html#cm_var"><span class="hs-identifier hs-var">cm_var</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680856546"><span class="annot"><span class="annottext">VarMap a
</span><a href="#local-6989586621680856546"><span class="hs-identifier hs-var">cvar</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">cm_lit :: forall a. CoreMapX a -&gt; LiteralMap a
</span><a href="GHC.Core.Map.html#cm_lit"><span class="hs-identifier hs-var">cm_lit</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680856545"><span class="annot"><span class="annottext">LiteralMap a
</span><a href="#local-6989586621680856545"><span class="hs-identifier hs-var">clit</span></a></span></span><span>
</span><span id="line-242"></span><span>           </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">cm_co :: forall a. CoreMapX a -&gt; CoercionMapG a
</span><a href="GHC.Core.Map.html#cm_co"><span class="hs-identifier hs-var">cm_co</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680856544"><span class="annot"><span class="annottext">CoercionMapG a
</span><a href="#local-6989586621680856544"><span class="hs-identifier hs-var">cco</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">cm_type :: forall a. CoreMapX a -&gt; TypeMapG a
</span><a href="GHC.Core.Map.html#cm_type"><span class="hs-identifier hs-var">cm_type</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680856543"><span class="annot"><span class="annottext">TypeMapG a
</span><a href="#local-6989586621680856543"><span class="hs-identifier hs-var">ctype</span></a></span></span><span>
</span><span id="line-243"></span><span>           </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">cm_cast :: forall a. CoreMapX a -&gt; CoreMapG (CoercionMapG a)
</span><a href="GHC.Core.Map.html#cm_cast"><span class="hs-identifier hs-var">cm_cast</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680856542"><span class="annot"><span class="annottext">CoreMapG (CoercionMapG a)
</span><a href="#local-6989586621680856542"><span class="hs-identifier hs-var">ccast</span></a></span></span><span> </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">cm_app :: forall a. CoreMapX a -&gt; CoreMapG (CoreMapG a)
</span><a href="GHC.Core.Map.html#cm_app"><span class="hs-identifier hs-var">cm_app</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680856541"><span class="annot"><span class="annottext">CoreMapG (CoreMapG a)
</span><a href="#local-6989586621680856541"><span class="hs-identifier hs-var">capp</span></a></span></span><span>
</span><span id="line-244"></span><span>           </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">cm_lam :: forall a. CoreMapX a -&gt; CoreMapG (BndrMap a)
</span><a href="GHC.Core.Map.html#cm_lam"><span class="hs-identifier hs-var">cm_lam</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680856540"><span class="annot"><span class="annottext">CoreMapG (BndrMap a)
</span><a href="#local-6989586621680856540"><span class="hs-identifier hs-var">clam</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">cm_letn :: forall a. CoreMapX a -&gt; CoreMapG (CoreMapG (BndrMap a))
</span><a href="GHC.Core.Map.html#cm_letn"><span class="hs-identifier hs-var">cm_letn</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680856539"><span class="annot"><span class="annottext">CoreMapG (CoreMapG (BndrMap a))
</span><a href="#local-6989586621680856539"><span class="hs-identifier hs-var">cletn</span></a></span></span><span>
</span><span id="line-245"></span><span>           </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">cm_letr :: forall a.
CoreMapX a
-&gt; ListMap (GenMap CoreMapX) (CoreMapG (ListMap BndrMap a))
</span><a href="GHC.Core.Map.html#cm_letr"><span class="hs-identifier hs-var">cm_letr</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680856538"><span class="annot"><span class="annottext">ListMap (GenMap CoreMapX) (CoreMapG (ListMap BndrMap a))
</span><a href="#local-6989586621680856538"><span class="hs-identifier hs-var">cletr</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">cm_case :: forall a. CoreMapX a -&gt; CoreMapG (ListMap AltMap a)
</span><a href="GHC.Core.Map.html#cm_case"><span class="hs-identifier hs-var">cm_case</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680856537"><span class="annot"><span class="annottext">CoreMapG (ListMap AltMap a)
</span><a href="#local-6989586621680856537"><span class="hs-identifier hs-var">ccase</span></a></span></span><span>
</span><span id="line-246"></span><span>           </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">cm_ecase :: forall a. CoreMapX a -&gt; CoreMapG (TypeMapG a)
</span><a href="GHC.Core.Map.html#cm_ecase"><span class="hs-identifier hs-var">cm_ecase</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680856536"><span class="annot"><span class="annottext">CoreMapG (TypeMapG a)
</span><a href="#local-6989586621680856536"><span class="hs-identifier hs-var">cecase</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">cm_tick :: forall a. CoreMapX a -&gt; CoreMapG (TickishMap a)
</span><a href="GHC.Core.Map.html#cm_tick"><span class="hs-identifier hs-var">cm_tick</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680856535"><span class="annot"><span class="annottext">CoreMapG (TickishMap a)
</span><a href="#local-6989586621680856535"><span class="hs-identifier hs-var">ctick</span></a></span></span><span> </span><span class="hs-special">}</span><span class="hs-special">)</span><span>
</span><span id="line-247"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CM :: forall a.
VarMap a
-&gt; LiteralMap a
-&gt; CoercionMapG a
-&gt; TypeMapG a
-&gt; CoreMapG (CoercionMapG a)
-&gt; CoreMapG (TickishMap a)
-&gt; CoreMapG (CoreMapG a)
-&gt; CoreMapG (BndrMap a)
-&gt; CoreMapG (CoreMapG (BndrMap a))
-&gt; ListMap (GenMap CoreMapX) (CoreMapG (ListMap BndrMap a))
-&gt; CoreMapG (ListMap AltMap a)
-&gt; CoreMapG (TypeMapG a)
-&gt; CoreMapX a
</span><a href="GHC.Core.Map.html#CM"><span class="hs-identifier hs-type">CM</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">cm_var :: VarMap b
</span><a href="GHC.Core.Map.html#cm_var"><span class="hs-identifier hs-var">cm_var</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(a -&gt; b) -&gt; VarMap a -&gt; VarMap b
forall (m :: * -&gt; *) a b. TrieMap m =&gt; (a -&gt; b) -&gt; m a -&gt; m b
</span><a href="GHC.Data.TrieMap.html#mapTM"><span class="hs-identifier hs-var">mapTM</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b
</span><a href="#local-6989586621680856547"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">VarMap a
</span><a href="#local-6989586621680856546"><span class="hs-identifier hs-var">cvar</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">cm_lit :: LiteralMap b
</span><a href="GHC.Core.Map.html#cm_lit"><span class="hs-identifier hs-var">cm_lit</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(a -&gt; b) -&gt; LiteralMap a -&gt; LiteralMap b
forall (m :: * -&gt; *) a b. TrieMap m =&gt; (a -&gt; b) -&gt; m a -&gt; m b
</span><a href="GHC.Data.TrieMap.html#mapTM"><span class="hs-identifier hs-var">mapTM</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b
</span><a href="#local-6989586621680856547"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">LiteralMap a
</span><a href="#local-6989586621680856545"><span class="hs-identifier hs-var">clit</span></a></span><span>
</span><span id="line-248"></span><span>       </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">cm_co :: CoercionMapG b
</span><a href="GHC.Core.Map.html#cm_co"><span class="hs-identifier hs-var">cm_co</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(a -&gt; b) -&gt; CoercionMapG a -&gt; CoercionMapG b
forall (m :: * -&gt; *) a b. TrieMap m =&gt; (a -&gt; b) -&gt; m a -&gt; m b
</span><a href="GHC.Data.TrieMap.html#mapTM"><span class="hs-identifier hs-var">mapTM</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b
</span><a href="#local-6989586621680856547"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">CoercionMapG a
</span><a href="#local-6989586621680856544"><span class="hs-identifier hs-var">cco</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">cm_type :: TypeMapG b
</span><a href="GHC.Core.Map.html#cm_type"><span class="hs-identifier hs-var">cm_type</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(a -&gt; b) -&gt; TypeMapG a -&gt; TypeMapG b
forall (m :: * -&gt; *) a b. TrieMap m =&gt; (a -&gt; b) -&gt; m a -&gt; m b
</span><a href="GHC.Data.TrieMap.html#mapTM"><span class="hs-identifier hs-var">mapTM</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b
</span><a href="#local-6989586621680856547"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">TypeMapG a
</span><a href="#local-6989586621680856543"><span class="hs-identifier hs-var">ctype</span></a></span><span>
</span><span id="line-249"></span><span>       </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">cm_cast :: CoreMapG (CoercionMapG b)
</span><a href="GHC.Core.Map.html#cm_cast"><span class="hs-identifier hs-var">cm_cast</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(CoercionMapG a -&gt; CoercionMapG b)
-&gt; CoreMapG (CoercionMapG a) -&gt; CoreMapG (CoercionMapG b)
forall (m :: * -&gt; *) a b. TrieMap m =&gt; (a -&gt; b) -&gt; m a -&gt; m b
</span><a href="GHC.Data.TrieMap.html#mapTM"><span class="hs-identifier hs-var">mapTM</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(a -&gt; b) -&gt; CoercionMapG a -&gt; CoercionMapG b
forall (m :: * -&gt; *) a b. TrieMap m =&gt; (a -&gt; b) -&gt; m a -&gt; m b
</span><a href="GHC.Data.TrieMap.html#mapTM"><span class="hs-identifier hs-var">mapTM</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b
</span><a href="#local-6989586621680856547"><span class="hs-identifier hs-var">f</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">CoreMapG (CoercionMapG a)
</span><a href="#local-6989586621680856542"><span class="hs-identifier hs-var">ccast</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">cm_app :: CoreMapG (CoreMapG b)
</span><a href="GHC.Core.Map.html#cm_app"><span class="hs-identifier hs-var">cm_app</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(CoreMapG a -&gt; CoreMapG b)
-&gt; CoreMapG (CoreMapG a) -&gt; CoreMapG (CoreMapG b)
forall (m :: * -&gt; *) a b. TrieMap m =&gt; (a -&gt; b) -&gt; m a -&gt; m b
</span><a href="GHC.Data.TrieMap.html#mapTM"><span class="hs-identifier hs-var">mapTM</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(a -&gt; b) -&gt; CoreMapG a -&gt; CoreMapG b
forall (m :: * -&gt; *) a b. TrieMap m =&gt; (a -&gt; b) -&gt; m a -&gt; m b
</span><a href="GHC.Data.TrieMap.html#mapTM"><span class="hs-identifier hs-var">mapTM</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b
</span><a href="#local-6989586621680856547"><span class="hs-identifier hs-var">f</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">CoreMapG (CoreMapG a)
</span><a href="#local-6989586621680856541"><span class="hs-identifier hs-var">capp</span></a></span><span>
</span><span id="line-250"></span><span>       </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">cm_lam :: CoreMapG (BndrMap b)
</span><a href="GHC.Core.Map.html#cm_lam"><span class="hs-identifier hs-var">cm_lam</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(BndrMap a -&gt; BndrMap b)
-&gt; CoreMapG (BndrMap a) -&gt; CoreMapG (BndrMap b)
forall (m :: * -&gt; *) a b. TrieMap m =&gt; (a -&gt; b) -&gt; m a -&gt; m b
</span><a href="GHC.Data.TrieMap.html#mapTM"><span class="hs-identifier hs-var">mapTM</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(a -&gt; b) -&gt; BndrMap a -&gt; BndrMap b
forall (m :: * -&gt; *) a b. TrieMap m =&gt; (a -&gt; b) -&gt; m a -&gt; m b
</span><a href="GHC.Data.TrieMap.html#mapTM"><span class="hs-identifier hs-var">mapTM</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b
</span><a href="#local-6989586621680856547"><span class="hs-identifier hs-var">f</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">CoreMapG (BndrMap a)
</span><a href="#local-6989586621680856540"><span class="hs-identifier hs-var">clam</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">cm_letn :: CoreMapG (CoreMapG (BndrMap b))
</span><a href="GHC.Core.Map.html#cm_letn"><span class="hs-identifier hs-var">cm_letn</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(CoreMapG (BndrMap a) -&gt; CoreMapG (BndrMap b))
-&gt; CoreMapG (CoreMapG (BndrMap a))
-&gt; CoreMapG (CoreMapG (BndrMap b))
forall (m :: * -&gt; *) a b. TrieMap m =&gt; (a -&gt; b) -&gt; m a -&gt; m b
</span><a href="GHC.Data.TrieMap.html#mapTM"><span class="hs-identifier hs-var">mapTM</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(BndrMap a -&gt; BndrMap b)
-&gt; CoreMapG (BndrMap a) -&gt; CoreMapG (BndrMap b)
forall (m :: * -&gt; *) a b. TrieMap m =&gt; (a -&gt; b) -&gt; m a -&gt; m b
</span><a href="GHC.Data.TrieMap.html#mapTM"><span class="hs-identifier hs-var">mapTM</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(a -&gt; b) -&gt; BndrMap a -&gt; BndrMap b
forall (m :: * -&gt; *) a b. TrieMap m =&gt; (a -&gt; b) -&gt; m a -&gt; m b
</span><a href="GHC.Data.TrieMap.html#mapTM"><span class="hs-identifier hs-var">mapTM</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b
</span><a href="#local-6989586621680856547"><span class="hs-identifier hs-var">f</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">CoreMapG (CoreMapG (BndrMap a))
</span><a href="#local-6989586621680856539"><span class="hs-identifier hs-var">cletn</span></a></span><span>
</span><span id="line-251"></span><span>       </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">cm_letr :: ListMap (GenMap CoreMapX) (CoreMapG (ListMap BndrMap b))
</span><a href="GHC.Core.Map.html#cm_letr"><span class="hs-identifier hs-var">cm_letr</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(CoreMapG (ListMap BndrMap a) -&gt; CoreMapG (ListMap BndrMap b))
-&gt; ListMap (GenMap CoreMapX) (CoreMapG (ListMap BndrMap a))
-&gt; ListMap (GenMap CoreMapX) (CoreMapG (ListMap BndrMap b))
forall (m :: * -&gt; *) a b. TrieMap m =&gt; (a -&gt; b) -&gt; m a -&gt; m b
</span><a href="GHC.Data.TrieMap.html#mapTM"><span class="hs-identifier hs-var">mapTM</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(ListMap BndrMap a -&gt; ListMap BndrMap b)
-&gt; CoreMapG (ListMap BndrMap a) -&gt; CoreMapG (ListMap BndrMap b)
forall (m :: * -&gt; *) a b. TrieMap m =&gt; (a -&gt; b) -&gt; m a -&gt; m b
</span><a href="GHC.Data.TrieMap.html#mapTM"><span class="hs-identifier hs-var">mapTM</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(a -&gt; b) -&gt; ListMap BndrMap a -&gt; ListMap BndrMap b
forall (m :: * -&gt; *) a b. TrieMap m =&gt; (a -&gt; b) -&gt; m a -&gt; m b
</span><a href="GHC.Data.TrieMap.html#mapTM"><span class="hs-identifier hs-var">mapTM</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b
</span><a href="#local-6989586621680856547"><span class="hs-identifier hs-var">f</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">ListMap (GenMap CoreMapX) (CoreMapG (ListMap BndrMap a))
</span><a href="#local-6989586621680856538"><span class="hs-identifier hs-var">cletr</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">cm_case :: CoreMapG (ListMap AltMap b)
</span><a href="GHC.Core.Map.html#cm_case"><span class="hs-identifier hs-var">cm_case</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(ListMap AltMap a -&gt; ListMap AltMap b)
-&gt; CoreMapG (ListMap AltMap a) -&gt; CoreMapG (ListMap AltMap b)
forall (m :: * -&gt; *) a b. TrieMap m =&gt; (a -&gt; b) -&gt; m a -&gt; m b
</span><a href="GHC.Data.TrieMap.html#mapTM"><span class="hs-identifier hs-var">mapTM</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(a -&gt; b) -&gt; ListMap AltMap a -&gt; ListMap AltMap b
forall (m :: * -&gt; *) a b. TrieMap m =&gt; (a -&gt; b) -&gt; m a -&gt; m b
</span><a href="GHC.Data.TrieMap.html#mapTM"><span class="hs-identifier hs-var">mapTM</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b
</span><a href="#local-6989586621680856547"><span class="hs-identifier hs-var">f</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">CoreMapG (ListMap AltMap a)
</span><a href="#local-6989586621680856537"><span class="hs-identifier hs-var">ccase</span></a></span><span>
</span><span id="line-252"></span><span>       </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">cm_ecase :: CoreMapG (TypeMapG b)
</span><a href="GHC.Core.Map.html#cm_ecase"><span class="hs-identifier hs-var">cm_ecase</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(TypeMapG a -&gt; TypeMapG b)
-&gt; CoreMapG (TypeMapG a) -&gt; CoreMapG (TypeMapG b)
forall (m :: * -&gt; *) a b. TrieMap m =&gt; (a -&gt; b) -&gt; m a -&gt; m b
</span><a href="GHC.Data.TrieMap.html#mapTM"><span class="hs-identifier hs-var">mapTM</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(a -&gt; b) -&gt; TypeMapG a -&gt; TypeMapG b
forall (m :: * -&gt; *) a b. TrieMap m =&gt; (a -&gt; b) -&gt; m a -&gt; m b
</span><a href="GHC.Data.TrieMap.html#mapTM"><span class="hs-identifier hs-var">mapTM</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b
</span><a href="#local-6989586621680856547"><span class="hs-identifier hs-var">f</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">CoreMapG (TypeMapG a)
</span><a href="#local-6989586621680856536"><span class="hs-identifier hs-var">cecase</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">cm_tick :: CoreMapG (TickishMap b)
</span><a href="GHC.Core.Map.html#cm_tick"><span class="hs-identifier hs-var">cm_tick</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(TickishMap a -&gt; TickishMap b)
-&gt; CoreMapG (TickishMap a) -&gt; CoreMapG (TickishMap b)
forall (m :: * -&gt; *) a b. TrieMap m =&gt; (a -&gt; b) -&gt; m a -&gt; m b
</span><a href="GHC.Data.TrieMap.html#mapTM"><span class="hs-identifier hs-var">mapTM</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(a -&gt; b) -&gt; TickishMap a -&gt; TickishMap b
forall (m :: * -&gt; *) a b. TrieMap m =&gt; (a -&gt; b) -&gt; m a -&gt; m b
</span><a href="GHC.Data.TrieMap.html#mapTM"><span class="hs-identifier hs-var">mapTM</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b
</span><a href="#local-6989586621680856547"><span class="hs-identifier hs-var">f</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">CoreMapG (TickishMap a)
</span><a href="#local-6989586621680856535"><span class="hs-identifier hs-var">ctick</span></a></span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-253"></span><span>
</span><span id="line-254"></span><span class="hs-comment">--------------------------</span><span>
</span><span id="line-255"></span><span id="local-6989586621680857158"><span class="annot"><a href="GHC.Core.Map.html#lookupCoreMap"><span class="hs-identifier hs-type">lookupCoreMap</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CoreMap"><span class="hs-identifier hs-type">CoreMap</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857158"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.html#CoreExpr"><span class="hs-identifier hs-type">CoreExpr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857158"><span class="hs-identifier hs-type">a</span></a></span></span><span>
</span><span id="line-256"></span><span id="lookupCoreMap"><span class="annot"><span class="annottext">lookupCoreMap :: forall a. CoreMap a -&gt; CoreExpr -&gt; Maybe a
</span><a href="GHC.Core.Map.html#lookupCoreMap"><span class="hs-identifier hs-var hs-var">lookupCoreMap</span></a></span></span><span> </span><span id="local-6989586621680856533"><span class="annot"><span class="annottext">CoreMap a
</span><a href="#local-6989586621680856533"><span class="hs-identifier hs-var">cm</span></a></span></span><span> </span><span id="local-6989586621680856532"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856532"><span class="hs-identifier hs-var">e</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Key CoreMap -&gt; CoreMap a -&gt; Maybe a
forall (m :: * -&gt; *) b. TrieMap m =&gt; Key m -&gt; m b -&gt; Maybe b
</span><a href="GHC.Data.TrieMap.html#lookupTM"><span class="hs-identifier hs-var">lookupTM</span></a></span><span> </span><span class="annot"><span class="annottext">Key CoreMap
CoreExpr
</span><a href="#local-6989586621680856532"><span class="hs-identifier hs-var">e</span></a></span><span> </span><span class="annot"><span class="annottext">CoreMap a
</span><a href="#local-6989586621680856533"><span class="hs-identifier hs-var">cm</span></a></span><span>
</span><span id="line-257"></span><span>
</span><span id="line-258"></span><span id="local-6989586621680857156"><span class="annot"><a href="GHC.Core.Map.html#extendCoreMap"><span class="hs-identifier hs-type">extendCoreMap</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CoreMap"><span class="hs-identifier hs-type">CoreMap</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857156"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.html#CoreExpr"><span class="hs-identifier hs-type">CoreExpr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680857156"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CoreMap"><span class="hs-identifier hs-type">CoreMap</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857156"><span class="hs-identifier hs-type">a</span></a></span></span><span>
</span><span id="line-259"></span><span id="extendCoreMap"><span class="annot"><span class="annottext">extendCoreMap :: forall a. CoreMap a -&gt; CoreExpr -&gt; a -&gt; CoreMap a
</span><a href="GHC.Core.Map.html#extendCoreMap"><span class="hs-identifier hs-var hs-var">extendCoreMap</span></a></span></span><span> </span><span id="local-6989586621680856530"><span class="annot"><span class="annottext">CoreMap a
</span><a href="#local-6989586621680856530"><span class="hs-identifier hs-var">m</span></a></span></span><span> </span><span id="local-6989586621680856529"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856529"><span class="hs-identifier hs-var">e</span></a></span></span><span> </span><span id="local-6989586621680856528"><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621680856528"><span class="hs-identifier hs-var">v</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Key CoreMap -&gt; XT a -&gt; CoreMap a -&gt; CoreMap a
forall (m :: * -&gt; *) b. TrieMap m =&gt; Key m -&gt; XT b -&gt; m b -&gt; m b
</span><a href="GHC.Data.TrieMap.html#alterTM"><span class="hs-identifier hs-var">alterTM</span></a></span><span> </span><span class="annot"><span class="annottext">Key CoreMap
CoreExpr
</span><a href="#local-6989586621680856529"><span class="hs-identifier hs-var">e</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span class="annot"><span class="annottext">Maybe a
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">a -&gt; Maybe a
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621680856528"><span class="hs-identifier hs-var">v</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">CoreMap a
</span><a href="#local-6989586621680856530"><span class="hs-identifier hs-var">m</span></a></span><span>
</span><span id="line-260"></span><span>
</span><span id="line-261"></span><span id="local-6989586621680857152"><span id="local-6989586621680857153"><span class="annot"><a href="GHC.Core.Map.html#foldCoreMap"><span class="hs-identifier hs-type">foldCoreMap</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621680857153"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680857152"><span class="hs-identifier hs-type">b</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680857152"><span class="hs-identifier hs-type">b</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680857152"><span class="hs-identifier hs-type">b</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CoreMap"><span class="hs-identifier hs-type">CoreMap</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857153"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680857152"><span class="hs-identifier hs-type">b</span></a></span></span></span><span>
</span><span id="line-262"></span><span id="foldCoreMap"><span class="annot"><span class="annottext">foldCoreMap :: forall a b. (a -&gt; b -&gt; b) -&gt; b -&gt; CoreMap a -&gt; b
</span><a href="GHC.Core.Map.html#foldCoreMap"><span class="hs-identifier hs-var hs-var">foldCoreMap</span></a></span></span><span> </span><span id="local-6989586621680856526"><span class="annot"><span class="annottext">a -&gt; b -&gt; b
</span><a href="#local-6989586621680856526"><span class="hs-identifier hs-var">k</span></a></span></span><span> </span><span id="local-6989586621680856525"><span class="annot"><span class="annottext">b
</span><a href="#local-6989586621680856525"><span class="hs-identifier hs-var">z</span></a></span></span><span> </span><span id="local-6989586621680856524"><span class="annot"><span class="annottext">CoreMap a
</span><a href="#local-6989586621680856524"><span class="hs-identifier hs-var">m</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(a -&gt; b -&gt; b) -&gt; CoreMap a -&gt; b -&gt; b
forall (m :: * -&gt; *) a b.
TrieMap m =&gt;
(a -&gt; b -&gt; b) -&gt; m a -&gt; b -&gt; b
</span><a href="GHC.Data.TrieMap.html#foldTM"><span class="hs-identifier hs-var">foldTM</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b -&gt; b
</span><a href="#local-6989586621680856526"><span class="hs-identifier hs-var">k</span></a></span><span> </span><span class="annot"><span class="annottext">CoreMap a
</span><a href="#local-6989586621680856524"><span class="hs-identifier hs-var">m</span></a></span><span> </span><span class="annot"><span class="annottext">b
</span><a href="#local-6989586621680856525"><span class="hs-identifier hs-var">z</span></a></span><span>
</span><span id="line-263"></span><span>
</span><span id="line-264"></span><span id="local-6989586621680856523"><span class="annot"><a href="GHC.Core.Map.html#emptyCoreMap"><span class="hs-identifier hs-type">emptyCoreMap</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CoreMap"><span class="hs-identifier hs-type">CoreMap</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680856523"><span class="hs-identifier hs-type">a</span></a></span></span><span>
</span><span id="line-265"></span><span id="emptyCoreMap"><span class="annot"><span class="annottext">emptyCoreMap :: forall a. CoreMap a
</span><a href="GHC.Core.Map.html#emptyCoreMap"><span class="hs-identifier hs-var hs-var">emptyCoreMap</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoreMap a
forall (m :: * -&gt; *) a. TrieMap m =&gt; m a
</span><a href="GHC.Data.TrieMap.html#emptyTM"><span class="hs-identifier hs-var">emptyTM</span></a></span><span>
</span><span id="line-266"></span><span>
</span><span id="line-267"></span><span id="local-6989586621680857146"><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621680856519"><span class="annot"><a href="GHC.Utils.Outputable.html#Outputable"><span class="hs-identifier hs-type">Outputable</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857146"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#Outputable"><span class="hs-identifier hs-type">Outputable</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#CoreMap"><span class="hs-identifier hs-type">CoreMap</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857146"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-268"></span><span>  </span><span id="local-6989586621680856514"><span class="annot"><span class="annottext">ppr :: CoreMap a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var hs-var hs-var hs-var">ppr</span></a></span></span><span> </span><span id="local-6989586621680856512"><span class="annot"><span class="annottext">CoreMap a
</span><a href="#local-6989586621680856512"><span class="hs-identifier hs-var">m</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;CoreMap elts&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">[a] -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(a -&gt; [a] -&gt; [a]) -&gt; CoreMap a -&gt; [a] -&gt; [a]
forall (m :: * -&gt; *) a b.
TrieMap m =&gt;
(a -&gt; b -&gt; b) -&gt; m a -&gt; b -&gt; b
</span><a href="GHC.Data.TrieMap.html#foldTM"><span class="hs-identifier hs-var">foldTM</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-glyph">:</span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">CoreMap a
</span><a href="#local-6989586621680856512"><span class="hs-identifier hs-var">m</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span class="hs-special">)</span></span><span>
</span><span id="line-269"></span><span>
</span><span id="line-270"></span><span class="hs-comment">-------------------------</span><span>
</span><span id="line-271"></span><span id="local-6989586621680856508"><span id="local-6989586621680856509"><span class="annot"><a href="GHC.Core.Map.html#fdE"><span class="hs-identifier hs-type">fdE</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621680856509"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680856508"><span class="hs-identifier hs-type">b</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680856508"><span class="hs-identifier hs-type">b</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CoreMapX"><span class="hs-identifier hs-type">CoreMapX</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680856509"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680856508"><span class="hs-identifier hs-type">b</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680856508"><span class="hs-identifier hs-type">b</span></a></span></span></span><span>
</span><span id="line-272"></span><span id="fdE"><span class="annot"><span class="annottext">fdE :: forall a b. (a -&gt; b -&gt; b) -&gt; CoreMapX a -&gt; b -&gt; b
</span><a href="GHC.Core.Map.html#fdE"><span class="hs-identifier hs-var hs-var">fdE</span></a></span></span><span> </span><span id="local-6989586621680856472"><span class="annot"><span class="annottext">a -&gt; b -&gt; b
</span><a href="#local-6989586621680856472"><span class="hs-identifier hs-var">k</span></a></span></span><span> </span><span id="local-6989586621680856471"><span class="annot"><span class="annottext">CoreMapX a
</span><a href="#local-6989586621680856471"><span class="hs-identifier hs-var">m</span></a></span></span><span>
</span><span id="line-273"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(a -&gt; b -&gt; b) -&gt; VarMap a -&gt; b -&gt; b
forall (m :: * -&gt; *) a b.
TrieMap m =&gt;
(a -&gt; b -&gt; b) -&gt; m a -&gt; b -&gt; b
</span><a href="GHC.Data.TrieMap.html#foldTM"><span class="hs-identifier hs-var">foldTM</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b -&gt; b
</span><a href="#local-6989586621680856472"><span class="hs-identifier hs-var">k</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoreMapX a -&gt; VarMap a
forall a. CoreMapX a -&gt; VarMap a
</span><a href="GHC.Core.Map.html#cm_var"><span class="hs-identifier hs-var hs-var">cm_var</span></a></span><span> </span><span class="annot"><span class="annottext">CoreMapX a
</span><a href="#local-6989586621680856471"><span class="hs-identifier hs-var">m</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-274"></span><span>  </span><span class="annot"><span class="annottext">(b -&gt; b) -&gt; (b -&gt; b) -&gt; b -&gt; b
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">(a -&gt; b -&gt; b) -&gt; Map Literal a -&gt; b -&gt; b
forall (m :: * -&gt; *) a b.
TrieMap m =&gt;
(a -&gt; b -&gt; b) -&gt; m a -&gt; b -&gt; b
</span><a href="GHC.Data.TrieMap.html#foldTM"><span class="hs-identifier hs-var">foldTM</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b -&gt; b
</span><a href="#local-6989586621680856472"><span class="hs-identifier hs-var">k</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoreMapX a -&gt; Map Literal a
forall a. CoreMapX a -&gt; LiteralMap a
</span><a href="GHC.Core.Map.html#cm_lit"><span class="hs-identifier hs-var hs-var">cm_lit</span></a></span><span> </span><span class="annot"><span class="annottext">CoreMapX a
</span><a href="#local-6989586621680856471"><span class="hs-identifier hs-var">m</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-275"></span><span>  </span><span class="annot"><span class="annottext">(b -&gt; b) -&gt; (b -&gt; b) -&gt; b -&gt; b
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">(a -&gt; b -&gt; b) -&gt; GenMap CoercionMapX a -&gt; b -&gt; b
forall (m :: * -&gt; *) a b.
TrieMap m =&gt;
(a -&gt; b -&gt; b) -&gt; m a -&gt; b -&gt; b
</span><a href="GHC.Data.TrieMap.html#foldTM"><span class="hs-identifier hs-var">foldTM</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b -&gt; b
</span><a href="#local-6989586621680856472"><span class="hs-identifier hs-var">k</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoreMapX a -&gt; GenMap CoercionMapX a
forall a. CoreMapX a -&gt; CoercionMapG a
</span><a href="GHC.Core.Map.html#cm_co"><span class="hs-identifier hs-var hs-var">cm_co</span></a></span><span> </span><span class="annot"><span class="annottext">CoreMapX a
</span><a href="#local-6989586621680856471"><span class="hs-identifier hs-var">m</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-276"></span><span>  </span><span class="annot"><span class="annottext">(b -&gt; b) -&gt; (b -&gt; b) -&gt; b -&gt; b
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">(a -&gt; b -&gt; b) -&gt; GenMap TypeMapX a -&gt; b -&gt; b
forall (m :: * -&gt; *) a b.
TrieMap m =&gt;
(a -&gt; b -&gt; b) -&gt; m a -&gt; b -&gt; b
</span><a href="GHC.Data.TrieMap.html#foldTM"><span class="hs-identifier hs-var">foldTM</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b -&gt; b
</span><a href="#local-6989586621680856472"><span class="hs-identifier hs-var">k</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoreMapX a -&gt; GenMap TypeMapX a
forall a. CoreMapX a -&gt; TypeMapG a
</span><a href="GHC.Core.Map.html#cm_type"><span class="hs-identifier hs-var hs-var">cm_type</span></a></span><span> </span><span class="annot"><span class="annottext">CoreMapX a
</span><a href="#local-6989586621680856471"><span class="hs-identifier hs-var">m</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-277"></span><span>  </span><span class="annot"><span class="annottext">(b -&gt; b) -&gt; (b -&gt; b) -&gt; b -&gt; b
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">(GenMap CoercionMapX a -&gt; b -&gt; b)
-&gt; GenMap CoreMapX (GenMap CoercionMapX a) -&gt; b -&gt; b
forall (m :: * -&gt; *) a b.
TrieMap m =&gt;
(a -&gt; b -&gt; b) -&gt; m a -&gt; b -&gt; b
</span><a href="GHC.Data.TrieMap.html#foldTM"><span class="hs-identifier hs-var">foldTM</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(a -&gt; b -&gt; b) -&gt; GenMap CoercionMapX a -&gt; b -&gt; b
forall (m :: * -&gt; *) a b.
TrieMap m =&gt;
(a -&gt; b -&gt; b) -&gt; m a -&gt; b -&gt; b
</span><a href="GHC.Data.TrieMap.html#foldTM"><span class="hs-identifier hs-var">foldTM</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b -&gt; b
</span><a href="#local-6989586621680856472"><span class="hs-identifier hs-var">k</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoreMapX a -&gt; GenMap CoreMapX (GenMap CoercionMapX a)
forall a. CoreMapX a -&gt; CoreMapG (CoercionMapG a)
</span><a href="GHC.Core.Map.html#cm_cast"><span class="hs-identifier hs-var hs-var">cm_cast</span></a></span><span> </span><span class="annot"><span class="annottext">CoreMapX a
</span><a href="#local-6989586621680856471"><span class="hs-identifier hs-var">m</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-278"></span><span>  </span><span class="annot"><span class="annottext">(b -&gt; b) -&gt; (b -&gt; b) -&gt; b -&gt; b
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">(Map (Tickish Id) a -&gt; b -&gt; b)
-&gt; GenMap CoreMapX (Map (Tickish Id) a) -&gt; b -&gt; b
forall (m :: * -&gt; *) a b.
TrieMap m =&gt;
(a -&gt; b -&gt; b) -&gt; m a -&gt; b -&gt; b
</span><a href="GHC.Data.TrieMap.html#foldTM"><span class="hs-identifier hs-var">foldTM</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(a -&gt; b -&gt; b) -&gt; Map (Tickish Id) a -&gt; b -&gt; b
forall (m :: * -&gt; *) a b.
TrieMap m =&gt;
(a -&gt; b -&gt; b) -&gt; m a -&gt; b -&gt; b
</span><a href="GHC.Data.TrieMap.html#foldTM"><span class="hs-identifier hs-var">foldTM</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b -&gt; b
</span><a href="#local-6989586621680856472"><span class="hs-identifier hs-var">k</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoreMapX a -&gt; GenMap CoreMapX (Map (Tickish Id) a)
forall a. CoreMapX a -&gt; CoreMapG (TickishMap a)
</span><a href="GHC.Core.Map.html#cm_tick"><span class="hs-identifier hs-var hs-var">cm_tick</span></a></span><span> </span><span class="annot"><span class="annottext">CoreMapX a
</span><a href="#local-6989586621680856471"><span class="hs-identifier hs-var">m</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-279"></span><span>  </span><span class="annot"><span class="annottext">(b -&gt; b) -&gt; (b -&gt; b) -&gt; b -&gt; b
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">(GenMap CoreMapX a -&gt; b -&gt; b)
-&gt; GenMap CoreMapX (GenMap CoreMapX a) -&gt; b -&gt; b
forall (m :: * -&gt; *) a b.
TrieMap m =&gt;
(a -&gt; b -&gt; b) -&gt; m a -&gt; b -&gt; b
</span><a href="GHC.Data.TrieMap.html#foldTM"><span class="hs-identifier hs-var">foldTM</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(a -&gt; b -&gt; b) -&gt; GenMap CoreMapX a -&gt; b -&gt; b
forall (m :: * -&gt; *) a b.
TrieMap m =&gt;
(a -&gt; b -&gt; b) -&gt; m a -&gt; b -&gt; b
</span><a href="GHC.Data.TrieMap.html#foldTM"><span class="hs-identifier hs-var">foldTM</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b -&gt; b
</span><a href="#local-6989586621680856472"><span class="hs-identifier hs-var">k</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoreMapX a -&gt; GenMap CoreMapX (GenMap CoreMapX a)
forall a. CoreMapX a -&gt; CoreMapG (CoreMapG a)
</span><a href="GHC.Core.Map.html#cm_app"><span class="hs-identifier hs-var hs-var">cm_app</span></a></span><span> </span><span class="annot"><span class="annottext">CoreMapX a
</span><a href="#local-6989586621680856471"><span class="hs-identifier hs-var">m</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-280"></span><span>  </span><span class="annot"><span class="annottext">(b -&gt; b) -&gt; (b -&gt; b) -&gt; b -&gt; b
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">(BndrMap a -&gt; b -&gt; b) -&gt; GenMap CoreMapX (BndrMap a) -&gt; b -&gt; b
forall (m :: * -&gt; *) a b.
TrieMap m =&gt;
(a -&gt; b -&gt; b) -&gt; m a -&gt; b -&gt; b
</span><a href="GHC.Data.TrieMap.html#foldTM"><span class="hs-identifier hs-var">foldTM</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(a -&gt; b -&gt; b) -&gt; BndrMap a -&gt; b -&gt; b
forall (m :: * -&gt; *) a b.
TrieMap m =&gt;
(a -&gt; b -&gt; b) -&gt; m a -&gt; b -&gt; b
</span><a href="GHC.Data.TrieMap.html#foldTM"><span class="hs-identifier hs-var">foldTM</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b -&gt; b
</span><a href="#local-6989586621680856472"><span class="hs-identifier hs-var">k</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoreMapX a -&gt; GenMap CoreMapX (BndrMap a)
forall a. CoreMapX a -&gt; CoreMapG (BndrMap a)
</span><a href="GHC.Core.Map.html#cm_lam"><span class="hs-identifier hs-var hs-var">cm_lam</span></a></span><span> </span><span class="annot"><span class="annottext">CoreMapX a
</span><a href="#local-6989586621680856471"><span class="hs-identifier hs-var">m</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-281"></span><span>  </span><span class="annot"><span class="annottext">(b -&gt; b) -&gt; (b -&gt; b) -&gt; b -&gt; b
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">(GenMap CoreMapX (BndrMap a) -&gt; b -&gt; b)
-&gt; GenMap CoreMapX (GenMap CoreMapX (BndrMap a)) -&gt; b -&gt; b
forall (m :: * -&gt; *) a b.
TrieMap m =&gt;
(a -&gt; b -&gt; b) -&gt; m a -&gt; b -&gt; b
</span><a href="GHC.Data.TrieMap.html#foldTM"><span class="hs-identifier hs-var">foldTM</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(BndrMap a -&gt; b -&gt; b) -&gt; GenMap CoreMapX (BndrMap a) -&gt; b -&gt; b
forall (m :: * -&gt; *) a b.
TrieMap m =&gt;
(a -&gt; b -&gt; b) -&gt; m a -&gt; b -&gt; b
</span><a href="GHC.Data.TrieMap.html#foldTM"><span class="hs-identifier hs-var">foldTM</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(a -&gt; b -&gt; b) -&gt; BndrMap a -&gt; b -&gt; b
forall (m :: * -&gt; *) a b.
TrieMap m =&gt;
(a -&gt; b -&gt; b) -&gt; m a -&gt; b -&gt; b
</span><a href="GHC.Data.TrieMap.html#foldTM"><span class="hs-identifier hs-var">foldTM</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b -&gt; b
</span><a href="#local-6989586621680856472"><span class="hs-identifier hs-var">k</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoreMapX a -&gt; GenMap CoreMapX (GenMap CoreMapX (BndrMap a))
forall a. CoreMapX a -&gt; CoreMapG (CoreMapG (BndrMap a))
</span><a href="GHC.Core.Map.html#cm_letn"><span class="hs-identifier hs-var hs-var">cm_letn</span></a></span><span> </span><span class="annot"><span class="annottext">CoreMapX a
</span><a href="#local-6989586621680856471"><span class="hs-identifier hs-var">m</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-282"></span><span>  </span><span class="annot"><span class="annottext">(b -&gt; b) -&gt; (b -&gt; b) -&gt; b -&gt; b
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">(GenMap CoreMapX (ListMap BndrMap a) -&gt; b -&gt; b)
-&gt; ListMap (GenMap CoreMapX) (GenMap CoreMapX (ListMap BndrMap a))
-&gt; b
-&gt; b
forall (m :: * -&gt; *) a b.
TrieMap m =&gt;
(a -&gt; b -&gt; b) -&gt; m a -&gt; b -&gt; b
</span><a href="GHC.Data.TrieMap.html#foldTM"><span class="hs-identifier hs-var">foldTM</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(ListMap BndrMap a -&gt; b -&gt; b)
-&gt; GenMap CoreMapX (ListMap BndrMap a) -&gt; b -&gt; b
forall (m :: * -&gt; *) a b.
TrieMap m =&gt;
(a -&gt; b -&gt; b) -&gt; m a -&gt; b -&gt; b
</span><a href="GHC.Data.TrieMap.html#foldTM"><span class="hs-identifier hs-var">foldTM</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(a -&gt; b -&gt; b) -&gt; ListMap BndrMap a -&gt; b -&gt; b
forall (m :: * -&gt; *) a b.
TrieMap m =&gt;
(a -&gt; b -&gt; b) -&gt; m a -&gt; b -&gt; b
</span><a href="GHC.Data.TrieMap.html#foldTM"><span class="hs-identifier hs-var">foldTM</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b -&gt; b
</span><a href="#local-6989586621680856472"><span class="hs-identifier hs-var">k</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoreMapX a
-&gt; ListMap (GenMap CoreMapX) (GenMap CoreMapX (ListMap BndrMap a))
forall a.
CoreMapX a
-&gt; ListMap (GenMap CoreMapX) (CoreMapG (ListMap BndrMap a))
</span><a href="GHC.Core.Map.html#cm_letr"><span class="hs-identifier hs-var hs-var">cm_letr</span></a></span><span> </span><span class="annot"><span class="annottext">CoreMapX a
</span><a href="#local-6989586621680856471"><span class="hs-identifier hs-var">m</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-283"></span><span>  </span><span class="annot"><span class="annottext">(b -&gt; b) -&gt; (b -&gt; b) -&gt; b -&gt; b
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">(ListMap AltMap a -&gt; b -&gt; b)
-&gt; GenMap CoreMapX (ListMap AltMap a) -&gt; b -&gt; b
forall (m :: * -&gt; *) a b.
TrieMap m =&gt;
(a -&gt; b -&gt; b) -&gt; m a -&gt; b -&gt; b
</span><a href="GHC.Data.TrieMap.html#foldTM"><span class="hs-identifier hs-var">foldTM</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(a -&gt; b -&gt; b) -&gt; ListMap AltMap a -&gt; b -&gt; b
forall (m :: * -&gt; *) a b.
TrieMap m =&gt;
(a -&gt; b -&gt; b) -&gt; m a -&gt; b -&gt; b
</span><a href="GHC.Data.TrieMap.html#foldTM"><span class="hs-identifier hs-var">foldTM</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b -&gt; b
</span><a href="#local-6989586621680856472"><span class="hs-identifier hs-var">k</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoreMapX a -&gt; GenMap CoreMapX (ListMap AltMap a)
forall a. CoreMapX a -&gt; CoreMapG (ListMap AltMap a)
</span><a href="GHC.Core.Map.html#cm_case"><span class="hs-identifier hs-var hs-var">cm_case</span></a></span><span> </span><span class="annot"><span class="annottext">CoreMapX a
</span><a href="#local-6989586621680856471"><span class="hs-identifier hs-var">m</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-284"></span><span>  </span><span class="annot"><span class="annottext">(b -&gt; b) -&gt; (b -&gt; b) -&gt; b -&gt; b
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">(GenMap TypeMapX a -&gt; b -&gt; b)
-&gt; GenMap CoreMapX (GenMap TypeMapX a) -&gt; b -&gt; b
forall (m :: * -&gt; *) a b.
TrieMap m =&gt;
(a -&gt; b -&gt; b) -&gt; m a -&gt; b -&gt; b
</span><a href="GHC.Data.TrieMap.html#foldTM"><span class="hs-identifier hs-var">foldTM</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(a -&gt; b -&gt; b) -&gt; GenMap TypeMapX a -&gt; b -&gt; b
forall (m :: * -&gt; *) a b.
TrieMap m =&gt;
(a -&gt; b -&gt; b) -&gt; m a -&gt; b -&gt; b
</span><a href="GHC.Data.TrieMap.html#foldTM"><span class="hs-identifier hs-var">foldTM</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b -&gt; b
</span><a href="#local-6989586621680856472"><span class="hs-identifier hs-var">k</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoreMapX a -&gt; GenMap CoreMapX (GenMap TypeMapX a)
forall a. CoreMapX a -&gt; CoreMapG (TypeMapG a)
</span><a href="GHC.Core.Map.html#cm_ecase"><span class="hs-identifier hs-var hs-var">cm_ecase</span></a></span><span> </span><span class="annot"><span class="annottext">CoreMapX a
</span><a href="#local-6989586621680856471"><span class="hs-identifier hs-var">m</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-285"></span><span>
</span><span id="line-286"></span><span class="hs-comment">-- lkE: lookup in trie for expressions</span><span>
</span><span id="line-287"></span><span id="local-6989586621680857168"><span class="annot"><a href="GHC.Core.Map.html#lkE"><span class="hs-identifier hs-type">lkE</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#DeBruijn"><span class="hs-identifier hs-type">DeBruijn</span></a></span><span> </span><span class="annot"><a href="GHC.Core.html#CoreExpr"><span class="hs-identifier hs-type">CoreExpr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CoreMapX"><span class="hs-identifier hs-type">CoreMapX</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857168"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857168"><span class="hs-identifier hs-type">a</span></a></span></span><span>
</span><span id="line-288"></span><span id="lkE"><span class="annot"><span class="annottext">lkE :: forall a. DeBruijn CoreExpr -&gt; CoreMapX a -&gt; Maybe a
</span><a href="GHC.Core.Map.html#lkE"><span class="hs-identifier hs-var hs-var">lkE</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-type">D</span></a></span><span> </span><span id="local-6989586621680856420"><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856420"><span class="hs-identifier hs-var">env</span></a></span></span><span> </span><span id="local-6989586621680856419"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856419"><span class="hs-identifier hs-var">expr</span></a></span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621680856418"><span class="annot"><span class="annottext">CoreMapX a
</span><a href="#local-6989586621680856418"><span class="hs-identifier hs-var">cm</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoreExpr -&gt; CoreMapX a -&gt; Maybe a
</span><a href="#local-6989586621680856417"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856419"><span class="hs-identifier hs-var">expr</span></a></span><span> </span><span class="annot"><span class="annottext">CoreMapX a
</span><a href="#local-6989586621680856418"><span class="hs-identifier hs-var">cm</span></a></span><span>
</span><span id="line-289"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-290"></span><span>    </span><span id="local-6989586621680856417"><span class="annot"><span class="annottext">go :: CoreExpr -&gt; CoreMapX a -&gt; Maybe a
</span><a href="#local-6989586621680856417"><span class="hs-identifier hs-var hs-var">go</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Var"><span class="hs-identifier hs-type">Var</span></a></span><span> </span><span id="local-6989586621680856416"><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680856416"><span class="hs-identifier hs-var">v</span></a></span></span><span class="hs-special">)</span><span>              </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoreMapX a -&gt; VarMap a
forall a. CoreMapX a -&gt; VarMap a
</span><a href="GHC.Core.Map.html#cm_var"><span class="hs-identifier hs-var hs-var">cm_var</span></a></span><span>  </span><span class="annot"><span class="annottext">(CoreMapX a -&gt; VarMap a)
-&gt; (VarMap a -&gt; Maybe a) -&gt; CoreMapX a -&gt; Maybe a
forall a b c. (a -&gt; b) -&gt; (b -&gt; c) -&gt; a -&gt; c
</span><a href="GHC.Data.TrieMap.html#%3E.%3E"><span class="hs-operator hs-var">&gt;.&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; Id -&gt; VarMap a -&gt; Maybe a
forall a. CmEnv -&gt; Id -&gt; VarMap a -&gt; Maybe a
</span><a href="GHC.Core.Map.html#lkVar"><span class="hs-identifier hs-var">lkVar</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856420"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680856416"><span class="hs-identifier hs-var">v</span></a></span><span>
</span><span id="line-291"></span><span>    </span><span class="annot"><a href="#local-6989586621680856417"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Lit"><span class="hs-identifier hs-type">Lit</span></a></span><span> </span><span id="local-6989586621680856414"><span class="annot"><span class="annottext">Literal
</span><a href="#local-6989586621680856414"><span class="hs-identifier hs-var">l</span></a></span></span><span class="hs-special">)</span><span>              </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoreMapX a -&gt; LiteralMap a
forall a. CoreMapX a -&gt; LiteralMap a
</span><a href="GHC.Core.Map.html#cm_lit"><span class="hs-identifier hs-var hs-var">cm_lit</span></a></span><span>  </span><span class="annot"><span class="annottext">(CoreMapX a -&gt; LiteralMap a)
-&gt; (LiteralMap a -&gt; Maybe a) -&gt; CoreMapX a -&gt; Maybe a
forall a b c. (a -&gt; b) -&gt; (b -&gt; c) -&gt; a -&gt; c
</span><a href="GHC.Data.TrieMap.html#%3E.%3E"><span class="hs-operator hs-var">&gt;.&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Key (Map Literal) -&gt; LiteralMap a -&gt; Maybe a
forall (m :: * -&gt; *) b. TrieMap m =&gt; Key m -&gt; m b -&gt; Maybe b
</span><a href="GHC.Data.TrieMap.html#lookupTM"><span class="hs-identifier hs-var">lookupTM</span></a></span><span> </span><span class="annot"><span class="annottext">Literal
Key (Map Literal)
</span><a href="#local-6989586621680856414"><span class="hs-identifier hs-var">l</span></a></span><span>
</span><span id="line-292"></span><span>    </span><span class="annot"><a href="#local-6989586621680856417"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span> </span><span id="local-6989586621680856413"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680856413"><span class="hs-identifier hs-var">t</span></a></span></span><span class="hs-special">)</span><span>             </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoreMapX a -&gt; TypeMapG a
forall a. CoreMapX a -&gt; TypeMapG a
</span><a href="GHC.Core.Map.html#cm_type"><span class="hs-identifier hs-var hs-var">cm_type</span></a></span><span> </span><span class="annot"><span class="annottext">(CoreMapX a -&gt; TypeMapG a)
-&gt; (TypeMapG a -&gt; Maybe a) -&gt; CoreMapX a -&gt; Maybe a
forall a b c. (a -&gt; b) -&gt; (b -&gt; c) -&gt; a -&gt; c
</span><a href="GHC.Data.TrieMap.html#%3E.%3E"><span class="hs-operator hs-var">&gt;.&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Key TypeMapX -&gt; TypeMapG a -&gt; Maybe a
forall (m :: * -&gt; *) a.
(Eq (Key m), TrieMap m) =&gt;
Key m -&gt; GenMap m a -&gt; Maybe a
</span><a href="GHC.Data.TrieMap.html#lkG"><span class="hs-identifier hs-var">lkG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; Type -&gt; DeBruijn Type
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856420"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680856413"><span class="hs-identifier hs-var">t</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-293"></span><span>    </span><span class="annot"><a href="#local-6989586621680856417"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Coercion"><span class="hs-identifier hs-type">Coercion</span></a></span><span> </span><span id="local-6989586621680856412"><span class="annot"><span class="annottext">Coercion
</span><a href="#local-6989586621680856412"><span class="hs-identifier hs-var">c</span></a></span></span><span class="hs-special">)</span><span>         </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoreMapX a -&gt; CoercionMapG a
forall a. CoreMapX a -&gt; CoercionMapG a
</span><a href="GHC.Core.Map.html#cm_co"><span class="hs-identifier hs-var hs-var">cm_co</span></a></span><span>   </span><span class="annot"><span class="annottext">(CoreMapX a -&gt; CoercionMapG a)
-&gt; (CoercionMapG a -&gt; Maybe a) -&gt; CoreMapX a -&gt; Maybe a
forall a b c. (a -&gt; b) -&gt; (b -&gt; c) -&gt; a -&gt; c
</span><a href="GHC.Data.TrieMap.html#%3E.%3E"><span class="hs-operator hs-var">&gt;.&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Key CoercionMapX -&gt; CoercionMapG a -&gt; Maybe a
forall (m :: * -&gt; *) a.
(Eq (Key m), TrieMap m) =&gt;
Key m -&gt; GenMap m a -&gt; Maybe a
</span><a href="GHC.Data.TrieMap.html#lkG"><span class="hs-identifier hs-var">lkG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; Coercion -&gt; DeBruijn Coercion
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856420"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Coercion
</span><a href="#local-6989586621680856412"><span class="hs-identifier hs-var">c</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-294"></span><span>    </span><span class="annot"><a href="#local-6989586621680856417"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Cast"><span class="hs-identifier hs-type">Cast</span></a></span><span> </span><span id="local-6989586621680856411"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856411"><span class="hs-identifier hs-var">e</span></a></span></span><span> </span><span id="local-6989586621680856410"><span class="annot"><span class="annottext">Coercion
</span><a href="#local-6989586621680856410"><span class="hs-identifier hs-var">c</span></a></span></span><span class="hs-special">)</span><span>           </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoreMapX a -&gt; CoreMapG (CoercionMapG a)
forall a. CoreMapX a -&gt; CoreMapG (CoercionMapG a)
</span><a href="GHC.Core.Map.html#cm_cast"><span class="hs-identifier hs-var hs-var">cm_cast</span></a></span><span> </span><span class="annot"><span class="annottext">(CoreMapX a -&gt; CoreMapG (CoercionMapG a))
-&gt; (CoreMapG (CoercionMapG a) -&gt; Maybe a) -&gt; CoreMapX a -&gt; Maybe a
forall a b c. (a -&gt; b) -&gt; (b -&gt; c) -&gt; a -&gt; c
</span><a href="GHC.Data.TrieMap.html#%3E.%3E"><span class="hs-operator hs-var">&gt;.&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Key CoreMapX -&gt; CoreMapG (CoercionMapG a) -&gt; Maybe (CoercionMapG a)
forall (m :: * -&gt; *) a.
(Eq (Key m), TrieMap m) =&gt;
Key m -&gt; GenMap m a -&gt; Maybe a
</span><a href="GHC.Data.TrieMap.html#lkG"><span class="hs-identifier hs-var">lkG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; CoreExpr -&gt; DeBruijn CoreExpr
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856420"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856411"><span class="hs-identifier hs-var">e</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">(CoreMapG (CoercionMapG a) -&gt; Maybe (CoercionMapG a))
-&gt; (CoercionMapG a -&gt; Maybe a)
-&gt; CoreMapG (CoercionMapG a)
-&gt; Maybe a
forall (m :: * -&gt; *) a b c.
Monad m =&gt;
(a -&gt; m b) -&gt; (b -&gt; m c) -&gt; a -&gt; m c
</span><a href="../../base/src/Control.Monad.html#%3E%3D%3E"><span class="hs-operator hs-var">&gt;=&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Key CoercionMapX -&gt; CoercionMapG a -&gt; Maybe a
forall (m :: * -&gt; *) a.
(Eq (Key m), TrieMap m) =&gt;
Key m -&gt; GenMap m a -&gt; Maybe a
</span><a href="GHC.Data.TrieMap.html#lkG"><span class="hs-identifier hs-var">lkG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; Coercion -&gt; DeBruijn Coercion
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856420"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Coercion
</span><a href="#local-6989586621680856410"><span class="hs-identifier hs-var">c</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-295"></span><span>    </span><span class="annot"><a href="#local-6989586621680856417"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Tick"><span class="hs-identifier hs-type">Tick</span></a></span><span> </span><span id="local-6989586621680856409"><span class="annot"><span class="annottext">Tickish Id
</span><a href="#local-6989586621680856409"><span class="hs-identifier hs-var">tickish</span></a></span></span><span> </span><span id="local-6989586621680856408"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856408"><span class="hs-identifier hs-var">e</span></a></span></span><span class="hs-special">)</span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoreMapX a -&gt; CoreMapG (TickishMap a)
forall a. CoreMapX a -&gt; CoreMapG (TickishMap a)
</span><a href="GHC.Core.Map.html#cm_tick"><span class="hs-identifier hs-var hs-var">cm_tick</span></a></span><span> </span><span class="annot"><span class="annottext">(CoreMapX a -&gt; CoreMapG (TickishMap a))
-&gt; (CoreMapG (TickishMap a) -&gt; Maybe a) -&gt; CoreMapX a -&gt; Maybe a
forall a b c. (a -&gt; b) -&gt; (b -&gt; c) -&gt; a -&gt; c
</span><a href="GHC.Data.TrieMap.html#%3E.%3E"><span class="hs-operator hs-var">&gt;.&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Key CoreMapX -&gt; CoreMapG (TickishMap a) -&gt; Maybe (TickishMap a)
forall (m :: * -&gt; *) a.
(Eq (Key m), TrieMap m) =&gt;
Key m -&gt; GenMap m a -&gt; Maybe a
</span><a href="GHC.Data.TrieMap.html#lkG"><span class="hs-identifier hs-var">lkG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; CoreExpr -&gt; DeBruijn CoreExpr
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856420"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856408"><span class="hs-identifier hs-var">e</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">(CoreMapG (TickishMap a) -&gt; Maybe (TickishMap a))
-&gt; (TickishMap a -&gt; Maybe a) -&gt; CoreMapG (TickishMap a) -&gt; Maybe a
forall (m :: * -&gt; *) a b c.
Monad m =&gt;
(a -&gt; m b) -&gt; (b -&gt; m c) -&gt; a -&gt; m c
</span><a href="../../base/src/Control.Monad.html#%3E%3D%3E"><span class="hs-operator hs-var">&gt;=&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Tickish Id -&gt; TickishMap a -&gt; Maybe a
forall a. Tickish Id -&gt; TickishMap a -&gt; Maybe a
</span><a href="GHC.Core.Map.html#lkTickish"><span class="hs-identifier hs-var">lkTickish</span></a></span><span> </span><span class="annot"><span class="annottext">Tickish Id
</span><a href="#local-6989586621680856409"><span class="hs-identifier hs-var">tickish</span></a></span><span>
</span><span id="line-296"></span><span>    </span><span class="annot"><a href="#local-6989586621680856417"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#App"><span class="hs-identifier hs-type">App</span></a></span><span> </span><span id="local-6989586621680856406"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856406"><span class="hs-identifier hs-var">e1</span></a></span></span><span> </span><span id="local-6989586621680856405"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856405"><span class="hs-identifier hs-var">e2</span></a></span></span><span class="hs-special">)</span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoreMapX a -&gt; CoreMapG (CoreMapG a)
forall a. CoreMapX a -&gt; CoreMapG (CoreMapG a)
</span><a href="GHC.Core.Map.html#cm_app"><span class="hs-identifier hs-var hs-var">cm_app</span></a></span><span>  </span><span class="annot"><span class="annottext">(CoreMapX a -&gt; CoreMapG (CoreMapG a))
-&gt; (CoreMapG (CoreMapG a) -&gt; Maybe a) -&gt; CoreMapX a -&gt; Maybe a
forall a b c. (a -&gt; b) -&gt; (b -&gt; c) -&gt; a -&gt; c
</span><a href="GHC.Data.TrieMap.html#%3E.%3E"><span class="hs-operator hs-var">&gt;.&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Key CoreMapX -&gt; CoreMapG (CoreMapG a) -&gt; Maybe (CoreMapG a)
forall (m :: * -&gt; *) a.
(Eq (Key m), TrieMap m) =&gt;
Key m -&gt; GenMap m a -&gt; Maybe a
</span><a href="GHC.Data.TrieMap.html#lkG"><span class="hs-identifier hs-var">lkG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; CoreExpr -&gt; DeBruijn CoreExpr
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856420"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856405"><span class="hs-identifier hs-var">e2</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">(CoreMapG (CoreMapG a) -&gt; Maybe (CoreMapG a))
-&gt; (CoreMapG a -&gt; Maybe a) -&gt; CoreMapG (CoreMapG a) -&gt; Maybe a
forall (m :: * -&gt; *) a b c.
Monad m =&gt;
(a -&gt; m b) -&gt; (b -&gt; m c) -&gt; a -&gt; m c
</span><a href="../../base/src/Control.Monad.html#%3E%3D%3E"><span class="hs-operator hs-var">&gt;=&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Key CoreMapX -&gt; CoreMapG a -&gt; Maybe a
forall (m :: * -&gt; *) a.
(Eq (Key m), TrieMap m) =&gt;
Key m -&gt; GenMap m a -&gt; Maybe a
</span><a href="GHC.Data.TrieMap.html#lkG"><span class="hs-identifier hs-var">lkG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; CoreExpr -&gt; DeBruijn CoreExpr
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856420"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856406"><span class="hs-identifier hs-var">e1</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-297"></span><span>    </span><span class="annot"><a href="#local-6989586621680856417"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Lam"><span class="hs-identifier hs-type">Lam</span></a></span><span> </span><span id="local-6989586621680856404"><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680856404"><span class="hs-identifier hs-var">v</span></a></span></span><span> </span><span id="local-6989586621680856403"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856403"><span class="hs-identifier hs-var">e</span></a></span></span><span class="hs-special">)</span><span>            </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoreMapX a -&gt; CoreMapG (BndrMap a)
forall a. CoreMapX a -&gt; CoreMapG (BndrMap a)
</span><a href="GHC.Core.Map.html#cm_lam"><span class="hs-identifier hs-var hs-var">cm_lam</span></a></span><span>  </span><span class="annot"><span class="annottext">(CoreMapX a -&gt; CoreMapG (BndrMap a))
-&gt; (CoreMapG (BndrMap a) -&gt; Maybe a) -&gt; CoreMapX a -&gt; Maybe a
forall a b c. (a -&gt; b) -&gt; (b -&gt; c) -&gt; a -&gt; c
</span><a href="GHC.Data.TrieMap.html#%3E.%3E"><span class="hs-operator hs-var">&gt;.&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Key CoreMapX -&gt; CoreMapG (BndrMap a) -&gt; Maybe (BndrMap a)
forall (m :: * -&gt; *) a.
(Eq (Key m), TrieMap m) =&gt;
Key m -&gt; GenMap m a -&gt; Maybe a
</span><a href="GHC.Data.TrieMap.html#lkG"><span class="hs-identifier hs-var">lkG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; CoreExpr -&gt; DeBruijn CoreExpr
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; Id -&gt; CmEnv
</span><a href="GHC.Core.Map.html#extendCME"><span class="hs-identifier hs-var">extendCME</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856420"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680856404"><span class="hs-identifier hs-var">v</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856403"><span class="hs-identifier hs-var">e</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-298"></span><span>                              </span><span class="annot"><span class="annottext">(CoreMapG (BndrMap a) -&gt; Maybe (BndrMap a))
-&gt; (BndrMap a -&gt; Maybe a) -&gt; CoreMapG (BndrMap a) -&gt; Maybe a
forall (m :: * -&gt; *) a b c.
Monad m =&gt;
(a -&gt; m b) -&gt; (b -&gt; m c) -&gt; a -&gt; m c
</span><a href="../../base/src/Control.Monad.html#%3E%3D%3E"><span class="hs-operator hs-var">&gt;=&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; Id -&gt; BndrMap a -&gt; Maybe a
forall a. CmEnv -&gt; Id -&gt; BndrMap a -&gt; Maybe a
</span><a href="GHC.Core.Map.html#lkBndr"><span class="hs-identifier hs-var">lkBndr</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856420"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680856404"><span class="hs-identifier hs-var">v</span></a></span><span>
</span><span id="line-299"></span><span>    </span><span class="annot"><a href="#local-6989586621680856417"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Let"><span class="hs-identifier hs-type">Let</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#NonRec"><span class="hs-identifier hs-type">NonRec</span></a></span><span> </span><span id="local-6989586621680856401"><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680856401"><span class="hs-identifier hs-var">b</span></a></span></span><span> </span><span id="local-6989586621680856400"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856400"><span class="hs-identifier hs-var">r</span></a></span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621680856399"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856399"><span class="hs-identifier hs-var">e</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoreMapX a -&gt; CoreMapG (CoreMapG (BndrMap a))
forall a. CoreMapX a -&gt; CoreMapG (CoreMapG (BndrMap a))
</span><a href="GHC.Core.Map.html#cm_letn"><span class="hs-identifier hs-var hs-var">cm_letn</span></a></span><span> </span><span class="annot"><span class="annottext">(CoreMapX a -&gt; CoreMapG (CoreMapG (BndrMap a)))
-&gt; (CoreMapG (CoreMapG (BndrMap a)) -&gt; Maybe a)
-&gt; CoreMapX a
-&gt; Maybe a
forall a b c. (a -&gt; b) -&gt; (b -&gt; c) -&gt; a -&gt; c
</span><a href="GHC.Data.TrieMap.html#%3E.%3E"><span class="hs-operator hs-var">&gt;.&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Key CoreMapX
-&gt; CoreMapG (CoreMapG (BndrMap a)) -&gt; Maybe (CoreMapG (BndrMap a))
forall (m :: * -&gt; *) a.
(Eq (Key m), TrieMap m) =&gt;
Key m -&gt; GenMap m a -&gt; Maybe a
</span><a href="GHC.Data.TrieMap.html#lkG"><span class="hs-identifier hs-var">lkG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; CoreExpr -&gt; DeBruijn CoreExpr
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856420"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856400"><span class="hs-identifier hs-var">r</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-300"></span><span>                              </span><span class="annot"><span class="annottext">(CoreMapG (CoreMapG (BndrMap a)) -&gt; Maybe (CoreMapG (BndrMap a)))
-&gt; (CoreMapG (BndrMap a) -&gt; Maybe a)
-&gt; CoreMapG (CoreMapG (BndrMap a))
-&gt; Maybe a
forall (m :: * -&gt; *) a b c.
Monad m =&gt;
(a -&gt; m b) -&gt; (b -&gt; m c) -&gt; a -&gt; m c
</span><a href="../../base/src/Control.Monad.html#%3E%3D%3E"><span class="hs-operator hs-var">&gt;=&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Key CoreMapX -&gt; CoreMapG (BndrMap a) -&gt; Maybe (BndrMap a)
forall (m :: * -&gt; *) a.
(Eq (Key m), TrieMap m) =&gt;
Key m -&gt; GenMap m a -&gt; Maybe a
</span><a href="GHC.Data.TrieMap.html#lkG"><span class="hs-identifier hs-var">lkG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; CoreExpr -&gt; DeBruijn CoreExpr
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; Id -&gt; CmEnv
</span><a href="GHC.Core.Map.html#extendCME"><span class="hs-identifier hs-var">extendCME</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856420"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680856401"><span class="hs-identifier hs-var">b</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856399"><span class="hs-identifier hs-var">e</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">(CoreMapG (BndrMap a) -&gt; Maybe (BndrMap a))
-&gt; (BndrMap a -&gt; Maybe a) -&gt; CoreMapG (BndrMap a) -&gt; Maybe a
forall (m :: * -&gt; *) a b c.
Monad m =&gt;
(a -&gt; m b) -&gt; (b -&gt; m c) -&gt; a -&gt; m c
</span><a href="../../base/src/Control.Monad.html#%3E%3D%3E"><span class="hs-operator hs-var">&gt;=&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; Id -&gt; BndrMap a -&gt; Maybe a
forall a. CmEnv -&gt; Id -&gt; BndrMap a -&gt; Maybe a
</span><a href="GHC.Core.Map.html#lkBndr"><span class="hs-identifier hs-var">lkBndr</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856420"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680856401"><span class="hs-identifier hs-var">b</span></a></span><span>
</span><span id="line-301"></span><span>    </span><span class="annot"><a href="#local-6989586621680856417"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Let"><span class="hs-identifier hs-type">Let</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Rec"><span class="hs-identifier hs-type">Rec</span></a></span><span> </span><span id="local-6989586621680856398"><span class="annot"><span class="annottext">[(Id, CoreExpr)]
</span><a href="#local-6989586621680856398"><span class="hs-identifier hs-var">prs</span></a></span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621680856397"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856397"><span class="hs-identifier hs-var">e</span></a></span></span><span class="hs-special">)</span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">let</span><span> </span><span class="hs-special">(</span><span id="local-6989586621680856396"><span class="annot"><span class="annottext">[Id]
</span><a href="#local-6989586621680856396"><span class="hs-identifier hs-var">bndrs</span></a></span></span><span class="hs-special">,</span><span id="local-6989586621680856395"><span class="annot"><span class="annottext">[CoreExpr]
</span><a href="#local-6989586621680856395"><span class="hs-identifier hs-var">rhss</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[(Id, CoreExpr)] -&gt; ([Id], [CoreExpr])
forall a b. [(a, b)] -&gt; ([a], [b])
</span><a href="../../base/src/GHC.List.html#unzip"><span class="hs-identifier hs-var">unzip</span></a></span><span> </span><span class="annot"><span class="annottext">[(Id, CoreExpr)]
</span><a href="#local-6989586621680856398"><span class="hs-identifier hs-var">prs</span></a></span><span>
</span><span id="line-302"></span><span>                                  </span><span id="local-6989586621680856394"><span class="annot"><span class="annottext">env1 :: CmEnv
</span><a href="#local-6989586621680856394"><span class="hs-identifier hs-var hs-var">env1</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; [Id] -&gt; CmEnv
</span><a href="GHC.Core.Map.html#extendCMEs"><span class="hs-identifier hs-var">extendCMEs</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856420"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">[Id]
</span><a href="#local-6989586621680856396"><span class="hs-identifier hs-var">bndrs</span></a></span><span>
</span><span id="line-303"></span><span>                              </span><span class="hs-keyword">in</span><span> </span><span class="annot"><span class="annottext">CoreMapX a
-&gt; ListMap (GenMap CoreMapX) (CoreMapG (ListMap BndrMap a))
forall a.
CoreMapX a
-&gt; ListMap (GenMap CoreMapX) (CoreMapG (ListMap BndrMap a))
</span><a href="GHC.Core.Map.html#cm_letr"><span class="hs-identifier hs-var hs-var">cm_letr</span></a></span><span>
</span><span id="line-304"></span><span>                                 </span><span class="annot"><span class="annottext">(CoreMapX a
 -&gt; ListMap (GenMap CoreMapX) (CoreMapG (ListMap BndrMap a)))
-&gt; (ListMap (GenMap CoreMapX) (CoreMapG (ListMap BndrMap a))
    -&gt; Maybe a)
-&gt; CoreMapX a
-&gt; Maybe a
forall a b c. (a -&gt; b) -&gt; (b -&gt; c) -&gt; a -&gt; c
</span><a href="GHC.Data.TrieMap.html#%3E.%3E"><span class="hs-operator hs-var">&gt;.&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">(forall b. CoreExpr -&gt; CoreMapG b -&gt; Maybe b)
-&gt; [CoreExpr]
-&gt; ListMap (GenMap CoreMapX) (CoreMapG (ListMap BndrMap a))
-&gt; Maybe (CoreMapG (ListMap BndrMap a))
forall (m :: * -&gt; *) k a.
TrieMap m =&gt;
(forall b. k -&gt; m b -&gt; Maybe b) -&gt; [k] -&gt; ListMap m a -&gt; Maybe a
</span><a href="GHC.Data.TrieMap.html#lkList"><span class="hs-identifier hs-var">lkList</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DeBruijn CoreExpr -&gt; GenMap CoreMapX b -&gt; Maybe b
forall (m :: * -&gt; *) a.
(Eq (Key m), TrieMap m) =&gt;
Key m -&gt; GenMap m a -&gt; Maybe a
</span><a href="GHC.Data.TrieMap.html#lkG"><span class="hs-identifier hs-var">lkG</span></a></span><span> </span><span class="annot"><span class="annottext">(DeBruijn CoreExpr -&gt; GenMap CoreMapX b -&gt; Maybe b)
-&gt; (CoreExpr -&gt; DeBruijn CoreExpr)
-&gt; CoreExpr
-&gt; GenMap CoreMapX b
-&gt; Maybe b
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; CoreExpr -&gt; DeBruijn CoreExpr
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856394"><span class="hs-identifier hs-var">env1</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[CoreExpr]
</span><a href="#local-6989586621680856395"><span class="hs-identifier hs-var">rhss</span></a></span><span>
</span><span id="line-305"></span><span>                                 </span><span class="annot"><span class="annottext">(ListMap (GenMap CoreMapX) (CoreMapG (ListMap BndrMap a))
 -&gt; Maybe (CoreMapG (ListMap BndrMap a)))
-&gt; (CoreMapG (ListMap BndrMap a) -&gt; Maybe a)
-&gt; ListMap (GenMap CoreMapX) (CoreMapG (ListMap BndrMap a))
-&gt; Maybe a
forall (m :: * -&gt; *) a b c.
Monad m =&gt;
(a -&gt; m b) -&gt; (b -&gt; m c) -&gt; a -&gt; m c
</span><a href="../../base/src/Control.Monad.html#%3E%3D%3E"><span class="hs-operator hs-var">&gt;=&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Key CoreMapX
-&gt; CoreMapG (ListMap BndrMap a) -&gt; Maybe (ListMap BndrMap a)
forall (m :: * -&gt; *) a.
(Eq (Key m), TrieMap m) =&gt;
Key m -&gt; GenMap m a -&gt; Maybe a
</span><a href="GHC.Data.TrieMap.html#lkG"><span class="hs-identifier hs-var">lkG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; CoreExpr -&gt; DeBruijn CoreExpr
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856394"><span class="hs-identifier hs-var">env1</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856397"><span class="hs-identifier hs-var">e</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-306"></span><span>                                 </span><span class="annot"><span class="annottext">(CoreMapG (ListMap BndrMap a) -&gt; Maybe (ListMap BndrMap a))
-&gt; (ListMap BndrMap a -&gt; Maybe a)
-&gt; CoreMapG (ListMap BndrMap a)
-&gt; Maybe a
forall (m :: * -&gt; *) a b c.
Monad m =&gt;
(a -&gt; m b) -&gt; (b -&gt; m c) -&gt; a -&gt; m c
</span><a href="../../base/src/Control.Monad.html#%3E%3D%3E"><span class="hs-operator hs-var">&gt;=&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">(forall b. Id -&gt; BndrMap b -&gt; Maybe b)
-&gt; [Id] -&gt; ListMap BndrMap a -&gt; Maybe a
forall (m :: * -&gt; *) k a.
TrieMap m =&gt;
(forall b. k -&gt; m b -&gt; Maybe b) -&gt; [k] -&gt; ListMap m a -&gt; Maybe a
</span><a href="GHC.Data.TrieMap.html#lkList"><span class="hs-identifier hs-var">lkList</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; Id -&gt; BndrMap b -&gt; Maybe b
forall a. CmEnv -&gt; Id -&gt; BndrMap a -&gt; Maybe a
</span><a href="GHC.Core.Map.html#lkBndr"><span class="hs-identifier hs-var">lkBndr</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856394"><span class="hs-identifier hs-var">env1</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[Id]
</span><a href="#local-6989586621680856396"><span class="hs-identifier hs-var">bndrs</span></a></span><span>
</span><span id="line-307"></span><span>    </span><span class="annot"><a href="#local-6989586621680856417"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Case"><span class="hs-identifier hs-type">Case</span></a></span><span> </span><span id="local-6989586621680856390"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856390"><span class="hs-identifier hs-var">e</span></a></span></span><span> </span><span id="local-6989586621680856389"><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680856389"><span class="hs-identifier hs-var">b</span></a></span></span><span> </span><span id="local-6989586621680856388"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680856388"><span class="hs-identifier hs-var">ty</span></a></span></span><span> </span><span id="local-6989586621680856387"><span class="annot"><span class="annottext">[CoreAlt]
</span><a href="#local-6989586621680856387"><span class="hs-keyword hs-var">as</span></a></span></span><span class="hs-special">)</span><span>     </span><span class="hs-comment">-- See Note [Empty case alternatives]</span><span>
</span><span id="line-308"></span><span>               </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">[CoreAlt] -&gt; Bool
forall (t :: * -&gt; *) a. Foldable t =&gt; t a -&gt; Bool
</span><a href="../../base/src/Data.Foldable.html#null"><span class="hs-identifier hs-var">null</span></a></span><span> </span><span class="annot"><span class="annottext">[CoreAlt]
</span><a href="#local-6989586621680856387"><span class="hs-keyword hs-var">as</span></a></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoreMapX a -&gt; CoreMapG (TypeMapG a)
forall a. CoreMapX a -&gt; CoreMapG (TypeMapG a)
</span><a href="GHC.Core.Map.html#cm_ecase"><span class="hs-identifier hs-var hs-var">cm_ecase</span></a></span><span> </span><span class="annot"><span class="annottext">(CoreMapX a -&gt; CoreMapG (TypeMapG a))
-&gt; (CoreMapG (TypeMapG a) -&gt; Maybe a) -&gt; CoreMapX a -&gt; Maybe a
forall a b c. (a -&gt; b) -&gt; (b -&gt; c) -&gt; a -&gt; c
</span><a href="GHC.Data.TrieMap.html#%3E.%3E"><span class="hs-operator hs-var">&gt;.&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Key CoreMapX -&gt; CoreMapG (TypeMapG a) -&gt; Maybe (TypeMapG a)
forall (m :: * -&gt; *) a.
(Eq (Key m), TrieMap m) =&gt;
Key m -&gt; GenMap m a -&gt; Maybe a
</span><a href="GHC.Data.TrieMap.html#lkG"><span class="hs-identifier hs-var">lkG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; CoreExpr -&gt; DeBruijn CoreExpr
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856420"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856390"><span class="hs-identifier hs-var">e</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">(CoreMapG (TypeMapG a) -&gt; Maybe (TypeMapG a))
-&gt; (TypeMapG a -&gt; Maybe a) -&gt; CoreMapG (TypeMapG a) -&gt; Maybe a
forall (m :: * -&gt; *) a b c.
Monad m =&gt;
(a -&gt; m b) -&gt; (b -&gt; m c) -&gt; a -&gt; m c
</span><a href="../../base/src/Control.Monad.html#%3E%3D%3E"><span class="hs-operator hs-var">&gt;=&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Key TypeMapX -&gt; TypeMapG a -&gt; Maybe a
forall (m :: * -&gt; *) a.
(Eq (Key m), TrieMap m) =&gt;
Key m -&gt; GenMap m a -&gt; Maybe a
</span><a href="GHC.Data.TrieMap.html#lkG"><span class="hs-identifier hs-var">lkG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; Type -&gt; DeBruijn Type
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856420"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680856388"><span class="hs-identifier hs-var">ty</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-309"></span><span>               </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoreMapX a -&gt; CoreMapG (ListMap AltMap a)
forall a. CoreMapX a -&gt; CoreMapG (ListMap AltMap a)
</span><a href="GHC.Core.Map.html#cm_case"><span class="hs-identifier hs-var hs-var">cm_case</span></a></span><span> </span><span class="annot"><span class="annottext">(CoreMapX a -&gt; CoreMapG (ListMap AltMap a))
-&gt; (CoreMapG (ListMap AltMap a) -&gt; Maybe a)
-&gt; CoreMapX a
-&gt; Maybe a
forall a b c. (a -&gt; b) -&gt; (b -&gt; c) -&gt; a -&gt; c
</span><a href="GHC.Data.TrieMap.html#%3E.%3E"><span class="hs-operator hs-var">&gt;.&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Key CoreMapX
-&gt; CoreMapG (ListMap AltMap a) -&gt; Maybe (ListMap AltMap a)
forall (m :: * -&gt; *) a.
(Eq (Key m), TrieMap m) =&gt;
Key m -&gt; GenMap m a -&gt; Maybe a
</span><a href="GHC.Data.TrieMap.html#lkG"><span class="hs-identifier hs-var">lkG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; CoreExpr -&gt; DeBruijn CoreExpr
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856420"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856390"><span class="hs-identifier hs-var">e</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-310"></span><span>                              </span><span class="annot"><span class="annottext">(CoreMapG (ListMap AltMap a) -&gt; Maybe (ListMap AltMap a))
-&gt; (ListMap AltMap a -&gt; Maybe a)
-&gt; CoreMapG (ListMap AltMap a)
-&gt; Maybe a
forall (m :: * -&gt; *) a b c.
Monad m =&gt;
(a -&gt; m b) -&gt; (b -&gt; m c) -&gt; a -&gt; m c
</span><a href="../../base/src/Control.Monad.html#%3E%3D%3E"><span class="hs-operator hs-var">&gt;=&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">(forall b. CoreAlt -&gt; AltMap b -&gt; Maybe b)
-&gt; [CoreAlt] -&gt; ListMap AltMap a -&gt; Maybe a
forall (m :: * -&gt; *) k a.
TrieMap m =&gt;
(forall b. k -&gt; m b -&gt; Maybe b) -&gt; [k] -&gt; ListMap m a -&gt; Maybe a
</span><a href="GHC.Data.TrieMap.html#lkList"><span class="hs-identifier hs-var">lkList</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; CoreAlt -&gt; AltMap b -&gt; Maybe b
forall a. CmEnv -&gt; CoreAlt -&gt; AltMap a -&gt; Maybe a
</span><a href="GHC.Core.Map.html#lkA"><span class="hs-identifier hs-var">lkA</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; Id -&gt; CmEnv
</span><a href="GHC.Core.Map.html#extendCME"><span class="hs-identifier hs-var">extendCME</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856420"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680856389"><span class="hs-identifier hs-var">b</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[CoreAlt]
</span><a href="#local-6989586621680856387"><span class="hs-keyword hs-var">as</span></a></span><span>
</span><span id="line-311"></span><span>
</span><span id="line-312"></span><span id="local-6989586621680857166"><span class="annot"><a href="GHC.Core.Map.html#xtE"><span class="hs-identifier hs-type">xtE</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#DeBruijn"><span class="hs-identifier hs-type">DeBruijn</span></a></span><span> </span><span class="annot"><a href="GHC.Core.html#CoreExpr"><span class="hs-identifier hs-type">CoreExpr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Data.TrieMap.html#XT"><span class="hs-identifier hs-type">XT</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857166"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CoreMapX"><span class="hs-identifier hs-type">CoreMapX</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857166"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CoreMapX"><span class="hs-identifier hs-type">CoreMapX</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857166"><span class="hs-identifier hs-type">a</span></a></span></span><span>
</span><span id="line-313"></span><span id="xtE"><span class="annot"><span class="annottext">xtE :: forall a. DeBruijn CoreExpr -&gt; XT a -&gt; CoreMapX a -&gt; CoreMapX a
</span><a href="GHC.Core.Map.html#xtE"><span class="hs-identifier hs-var hs-var">xtE</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-type">D</span></a></span><span> </span><span id="local-6989586621680856332"><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856332"><span class="hs-identifier hs-var">env</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Var"><span class="hs-identifier hs-type">Var</span></a></span><span> </span><span id="local-6989586621680856331"><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680856331"><span class="hs-identifier hs-var">v</span></a></span></span><span class="hs-special">)</span><span class="hs-special">)</span><span>              </span><span id="local-6989586621680856330"><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680856330"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span id="local-6989586621680856329"><span class="annot"><span class="annottext">CoreMapX a
</span><a href="#local-6989586621680856329"><span class="hs-identifier hs-var">m</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoreMapX a
</span><a href="#local-6989586621680856329"><span class="hs-identifier hs-var">m</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">cm_var :: VarMap a
</span><a href="GHC.Core.Map.html#cm_var"><span class="hs-identifier hs-var">cm_var</span></a></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoreMapX a -&gt; VarMap a
forall a. CoreMapX a -&gt; VarMap a
</span><a href="GHC.Core.Map.html#cm_var"><span class="hs-identifier hs-var hs-var">cm_var</span></a></span><span> </span><span class="annot"><span class="annottext">CoreMapX a
</span><a href="#local-6989586621680856329"><span class="hs-identifier hs-var">m</span></a></span><span>
</span><span id="line-314"></span><span>                                                 </span><span class="annot"><span class="annottext">VarMap a -&gt; (VarMap a -&gt; VarMap a) -&gt; VarMap a
forall a b. a -&gt; (a -&gt; b) -&gt; b
</span><a href="GHC.Data.TrieMap.html#%7C%3E"><span class="hs-operator hs-var">|&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; Id -&gt; XT a -&gt; VarMap a -&gt; VarMap a
forall a. CmEnv -&gt; Id -&gt; XT a -&gt; VarMap a -&gt; VarMap a
</span><a href="GHC.Core.Map.html#xtVar"><span class="hs-identifier hs-var">xtVar</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856332"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680856331"><span class="hs-identifier hs-var">v</span></a></span><span> </span><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680856330"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-315"></span><span class="annot"><a href="GHC.Core.Map.html#xtE"><span class="hs-identifier hs-var">xtE</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-type">D</span></a></span><span> </span><span id="local-6989586621680856327"><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856327"><span class="hs-identifier hs-var">env</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span> </span><span id="local-6989586621680856326"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680856326"><span class="hs-identifier hs-var">t</span></a></span></span><span class="hs-special">)</span><span class="hs-special">)</span><span>             </span><span id="local-6989586621680856325"><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680856325"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span id="local-6989586621680856324"><span class="annot"><span class="annottext">CoreMapX a
</span><a href="#local-6989586621680856324"><span class="hs-identifier hs-var">m</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoreMapX a
</span><a href="#local-6989586621680856324"><span class="hs-identifier hs-var">m</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">cm_type :: TypeMapG a
</span><a href="GHC.Core.Map.html#cm_type"><span class="hs-identifier hs-var">cm_type</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoreMapX a -&gt; TypeMapG a
forall a. CoreMapX a -&gt; TypeMapG a
</span><a href="GHC.Core.Map.html#cm_type"><span class="hs-identifier hs-var hs-var">cm_type</span></a></span><span> </span><span class="annot"><span class="annottext">CoreMapX a
</span><a href="#local-6989586621680856324"><span class="hs-identifier hs-var">m</span></a></span><span>
</span><span id="line-316"></span><span>                                                 </span><span class="annot"><span class="annottext">TypeMapG a -&gt; (TypeMapG a -&gt; TypeMapG a) -&gt; TypeMapG a
forall a b. a -&gt; (a -&gt; b) -&gt; b
</span><a href="GHC.Data.TrieMap.html#%7C%3E"><span class="hs-operator hs-var">|&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Key TypeMapX -&gt; XT a -&gt; TypeMapG a -&gt; TypeMapG a
forall (m :: * -&gt; *) a.
(Eq (Key m), TrieMap m) =&gt;
Key m -&gt; XT a -&gt; GenMap m a -&gt; GenMap m a
</span><a href="GHC.Data.TrieMap.html#xtG"><span class="hs-identifier hs-var">xtG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; Type -&gt; DeBruijn Type
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856327"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680856326"><span class="hs-identifier hs-var">t</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680856325"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-317"></span><span class="annot"><a href="GHC.Core.Map.html#xtE"><span class="hs-identifier hs-var">xtE</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-type">D</span></a></span><span> </span><span id="local-6989586621680856323"><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856323"><span class="hs-identifier hs-var">env</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Coercion"><span class="hs-identifier hs-type">Coercion</span></a></span><span> </span><span id="local-6989586621680856322"><span class="annot"><span class="annottext">Coercion
</span><a href="#local-6989586621680856322"><span class="hs-identifier hs-var">c</span></a></span></span><span class="hs-special">)</span><span class="hs-special">)</span><span>         </span><span id="local-6989586621680856321"><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680856321"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span id="local-6989586621680856320"><span class="annot"><span class="annottext">CoreMapX a
</span><a href="#local-6989586621680856320"><span class="hs-identifier hs-var">m</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoreMapX a
</span><a href="#local-6989586621680856320"><span class="hs-identifier hs-var">m</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">cm_co :: CoercionMapG a
</span><a href="GHC.Core.Map.html#cm_co"><span class="hs-identifier hs-var">cm_co</span></a></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoreMapX a -&gt; CoercionMapG a
forall a. CoreMapX a -&gt; CoercionMapG a
</span><a href="GHC.Core.Map.html#cm_co"><span class="hs-identifier hs-var hs-var">cm_co</span></a></span><span> </span><span class="annot"><span class="annottext">CoreMapX a
</span><a href="#local-6989586621680856320"><span class="hs-identifier hs-var">m</span></a></span><span>
</span><span id="line-318"></span><span>                                                 </span><span class="annot"><span class="annottext">CoercionMapG a
-&gt; (CoercionMapG a -&gt; CoercionMapG a) -&gt; CoercionMapG a
forall a b. a -&gt; (a -&gt; b) -&gt; b
</span><a href="GHC.Data.TrieMap.html#%7C%3E"><span class="hs-operator hs-var">|&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Key CoercionMapX -&gt; XT a -&gt; CoercionMapG a -&gt; CoercionMapG a
forall (m :: * -&gt; *) a.
(Eq (Key m), TrieMap m) =&gt;
Key m -&gt; XT a -&gt; GenMap m a -&gt; GenMap m a
</span><a href="GHC.Data.TrieMap.html#xtG"><span class="hs-identifier hs-var">xtG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; Coercion -&gt; DeBruijn Coercion
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856323"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Coercion
</span><a href="#local-6989586621680856322"><span class="hs-identifier hs-var">c</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680856321"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-319"></span><span class="annot"><a href="GHC.Core.Map.html#xtE"><span class="hs-identifier hs-var">xtE</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-type">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><span class="hs-identifier">_</span></span><span>   </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Lit"><span class="hs-identifier hs-type">Lit</span></a></span><span> </span><span id="local-6989586621680856319"><span class="annot"><span class="annottext">Literal
</span><a href="#local-6989586621680856319"><span class="hs-identifier hs-var">l</span></a></span></span><span class="hs-special">)</span><span class="hs-special">)</span><span>              </span><span id="local-6989586621680856318"><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680856318"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span id="local-6989586621680856317"><span class="annot"><span class="annottext">CoreMapX a
</span><a href="#local-6989586621680856317"><span class="hs-identifier hs-var">m</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoreMapX a
</span><a href="#local-6989586621680856317"><span class="hs-identifier hs-var">m</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">cm_lit :: LiteralMap a
</span><a href="GHC.Core.Map.html#cm_lit"><span class="hs-identifier hs-var">cm_lit</span></a></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoreMapX a -&gt; LiteralMap a
forall a. CoreMapX a -&gt; LiteralMap a
</span><a href="GHC.Core.Map.html#cm_lit"><span class="hs-identifier hs-var hs-var">cm_lit</span></a></span><span> </span><span class="annot"><span class="annottext">CoreMapX a
</span><a href="#local-6989586621680856317"><span class="hs-identifier hs-var">m</span></a></span><span>  </span><span class="annot"><span class="annottext">LiteralMap a -&gt; (LiteralMap a -&gt; LiteralMap a) -&gt; LiteralMap a
forall a b. a -&gt; (a -&gt; b) -&gt; b
</span><a href="GHC.Data.TrieMap.html#%7C%3E"><span class="hs-operator hs-var">|&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Key (Map Literal) -&gt; XT a -&gt; LiteralMap a -&gt; LiteralMap a
forall (m :: * -&gt; *) b. TrieMap m =&gt; Key m -&gt; XT b -&gt; m b -&gt; m b
</span><a href="GHC.Data.TrieMap.html#alterTM"><span class="hs-identifier hs-var">alterTM</span></a></span><span> </span><span class="annot"><span class="annottext">Literal
Key (Map Literal)
</span><a href="#local-6989586621680856319"><span class="hs-identifier hs-var">l</span></a></span><span> </span><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680856318"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-320"></span><span class="annot"><a href="GHC.Core.Map.html#xtE"><span class="hs-identifier hs-var">xtE</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-type">D</span></a></span><span> </span><span id="local-6989586621680856316"><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856316"><span class="hs-identifier hs-var">env</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Cast"><span class="hs-identifier hs-type">Cast</span></a></span><span> </span><span id="local-6989586621680856315"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856315"><span class="hs-identifier hs-var">e</span></a></span></span><span> </span><span id="local-6989586621680856314"><span class="annot"><span class="annottext">Coercion
</span><a href="#local-6989586621680856314"><span class="hs-identifier hs-var">c</span></a></span></span><span class="hs-special">)</span><span class="hs-special">)</span><span>           </span><span id="local-6989586621680856313"><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680856313"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span id="local-6989586621680856312"><span class="annot"><span class="annottext">CoreMapX a
</span><a href="#local-6989586621680856312"><span class="hs-identifier hs-var">m</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoreMapX a
</span><a href="#local-6989586621680856312"><span class="hs-identifier hs-var">m</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">cm_cast :: CoreMapG (CoercionMapG a)
</span><a href="GHC.Core.Map.html#cm_cast"><span class="hs-identifier hs-var">cm_cast</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoreMapX a -&gt; CoreMapG (CoercionMapG a)
forall a. CoreMapX a -&gt; CoreMapG (CoercionMapG a)
</span><a href="GHC.Core.Map.html#cm_cast"><span class="hs-identifier hs-var hs-var">cm_cast</span></a></span><span> </span><span class="annot"><span class="annottext">CoreMapX a
</span><a href="#local-6989586621680856312"><span class="hs-identifier hs-var">m</span></a></span><span> </span><span class="annot"><span class="annottext">CoreMapG (CoercionMapG a)
-&gt; (CoreMapG (CoercionMapG a) -&gt; CoreMapG (CoercionMapG a))
-&gt; CoreMapG (CoercionMapG a)
forall a b. a -&gt; (a -&gt; b) -&gt; b
</span><a href="GHC.Data.TrieMap.html#%7C%3E"><span class="hs-operator hs-var">|&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Key CoreMapX
-&gt; XT (CoercionMapG a)
-&gt; CoreMapG (CoercionMapG a)
-&gt; CoreMapG (CoercionMapG a)
forall (m :: * -&gt; *) a.
(Eq (Key m), TrieMap m) =&gt;
Key m -&gt; XT a -&gt; GenMap m a -&gt; GenMap m a
</span><a href="GHC.Data.TrieMap.html#xtG"><span class="hs-identifier hs-var">xtG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; CoreExpr -&gt; DeBruijn CoreExpr
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856316"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856315"><span class="hs-identifier hs-var">e</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-321"></span><span>                                                 </span><span class="annot"><span class="annottext">(XT (CoercionMapG a)
 -&gt; CoreMapG (CoercionMapG a) -&gt; CoreMapG (CoercionMapG a))
-&gt; (CoercionMapG a -&gt; CoercionMapG a)
-&gt; CoreMapG (CoercionMapG a)
-&gt; CoreMapG (CoercionMapG a)
forall (m2 :: * -&gt; *) a (m1 :: * -&gt; *).
TrieMap m2 =&gt;
(XT (m2 a) -&gt; m1 (m2 a) -&gt; m1 (m2 a))
-&gt; (m2 a -&gt; m2 a) -&gt; m1 (m2 a) -&gt; m1 (m2 a)
</span><a href="GHC.Data.TrieMap.html#%7C%3E%3E"><span class="hs-operator hs-var">|&gt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Key CoercionMapX -&gt; XT a -&gt; CoercionMapG a -&gt; CoercionMapG a
forall (m :: * -&gt; *) a.
(Eq (Key m), TrieMap m) =&gt;
Key m -&gt; XT a -&gt; GenMap m a -&gt; GenMap m a
</span><a href="GHC.Data.TrieMap.html#xtG"><span class="hs-identifier hs-var">xtG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; Coercion -&gt; DeBruijn Coercion
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856316"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Coercion
</span><a href="#local-6989586621680856314"><span class="hs-identifier hs-var">c</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680856313"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-322"></span><span class="annot"><a href="GHC.Core.Map.html#xtE"><span class="hs-identifier hs-var">xtE</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-type">D</span></a></span><span> </span><span id="local-6989586621680856311"><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856311"><span class="hs-identifier hs-var">env</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Tick"><span class="hs-identifier hs-type">Tick</span></a></span><span> </span><span id="local-6989586621680856310"><span class="annot"><span class="annottext">Tickish Id
</span><a href="#local-6989586621680856310"><span class="hs-identifier hs-var">t</span></a></span></span><span> </span><span id="local-6989586621680856309"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856309"><span class="hs-identifier hs-var">e</span></a></span></span><span class="hs-special">)</span><span class="hs-special">)</span><span>           </span><span id="local-6989586621680856308"><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680856308"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span id="local-6989586621680856307"><span class="annot"><span class="annottext">CoreMapX a
</span><a href="#local-6989586621680856307"><span class="hs-identifier hs-var">m</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoreMapX a
</span><a href="#local-6989586621680856307"><span class="hs-identifier hs-var">m</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">cm_tick :: CoreMapG (TickishMap a)
</span><a href="GHC.Core.Map.html#cm_tick"><span class="hs-identifier hs-var">cm_tick</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoreMapX a -&gt; CoreMapG (TickishMap a)
forall a. CoreMapX a -&gt; CoreMapG (TickishMap a)
</span><a href="GHC.Core.Map.html#cm_tick"><span class="hs-identifier hs-var hs-var">cm_tick</span></a></span><span> </span><span class="annot"><span class="annottext">CoreMapX a
</span><a href="#local-6989586621680856307"><span class="hs-identifier hs-var">m</span></a></span><span> </span><span class="annot"><span class="annottext">CoreMapG (TickishMap a)
-&gt; (CoreMapG (TickishMap a) -&gt; CoreMapG (TickishMap a))
-&gt; CoreMapG (TickishMap a)
forall a b. a -&gt; (a -&gt; b) -&gt; b
</span><a href="GHC.Data.TrieMap.html#%7C%3E"><span class="hs-operator hs-var">|&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Key CoreMapX
-&gt; XT (TickishMap a)
-&gt; CoreMapG (TickishMap a)
-&gt; CoreMapG (TickishMap a)
forall (m :: * -&gt; *) a.
(Eq (Key m), TrieMap m) =&gt;
Key m -&gt; XT a -&gt; GenMap m a -&gt; GenMap m a
</span><a href="GHC.Data.TrieMap.html#xtG"><span class="hs-identifier hs-var">xtG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; CoreExpr -&gt; DeBruijn CoreExpr
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856311"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856309"><span class="hs-identifier hs-var">e</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-323"></span><span>                                                 </span><span class="annot"><span class="annottext">(XT (TickishMap a)
 -&gt; CoreMapG (TickishMap a) -&gt; CoreMapG (TickishMap a))
-&gt; (TickishMap a -&gt; TickishMap a)
-&gt; CoreMapG (TickishMap a)
-&gt; CoreMapG (TickishMap a)
forall (m2 :: * -&gt; *) a (m1 :: * -&gt; *).
TrieMap m2 =&gt;
(XT (m2 a) -&gt; m1 (m2 a) -&gt; m1 (m2 a))
-&gt; (m2 a -&gt; m2 a) -&gt; m1 (m2 a) -&gt; m1 (m2 a)
</span><a href="GHC.Data.TrieMap.html#%7C%3E%3E"><span class="hs-operator hs-var">|&gt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Tickish Id -&gt; XT a -&gt; TickishMap a -&gt; TickishMap a
forall a. Tickish Id -&gt; XT a -&gt; TickishMap a -&gt; TickishMap a
</span><a href="GHC.Core.Map.html#xtTickish"><span class="hs-identifier hs-var">xtTickish</span></a></span><span> </span><span class="annot"><span class="annottext">Tickish Id
</span><a href="#local-6989586621680856310"><span class="hs-identifier hs-var">t</span></a></span><span> </span><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680856308"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-324"></span><span class="annot"><a href="GHC.Core.Map.html#xtE"><span class="hs-identifier hs-var">xtE</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-type">D</span></a></span><span> </span><span id="local-6989586621680856305"><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856305"><span class="hs-identifier hs-var">env</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#App"><span class="hs-identifier hs-type">App</span></a></span><span> </span><span id="local-6989586621680856304"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856304"><span class="hs-identifier hs-var">e1</span></a></span></span><span> </span><span id="local-6989586621680856303"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856303"><span class="hs-identifier hs-var">e2</span></a></span></span><span class="hs-special">)</span><span class="hs-special">)</span><span>          </span><span id="local-6989586621680856302"><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680856302"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span id="local-6989586621680856301"><span class="annot"><span class="annottext">CoreMapX a
</span><a href="#local-6989586621680856301"><span class="hs-identifier hs-var">m</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoreMapX a
</span><a href="#local-6989586621680856301"><span class="hs-identifier hs-var">m</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">cm_app :: CoreMapG (CoreMapG a)
</span><a href="GHC.Core.Map.html#cm_app"><span class="hs-identifier hs-var">cm_app</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoreMapX a -&gt; CoreMapG (CoreMapG a)
forall a. CoreMapX a -&gt; CoreMapG (CoreMapG a)
</span><a href="GHC.Core.Map.html#cm_app"><span class="hs-identifier hs-var hs-var">cm_app</span></a></span><span> </span><span class="annot"><span class="annottext">CoreMapX a
</span><a href="#local-6989586621680856301"><span class="hs-identifier hs-var">m</span></a></span><span> </span><span class="annot"><span class="annottext">CoreMapG (CoreMapG a)
-&gt; (CoreMapG (CoreMapG a) -&gt; CoreMapG (CoreMapG a))
-&gt; CoreMapG (CoreMapG a)
forall a b. a -&gt; (a -&gt; b) -&gt; b
</span><a href="GHC.Data.TrieMap.html#%7C%3E"><span class="hs-operator hs-var">|&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Key CoreMapX
-&gt; XT (CoreMapG a)
-&gt; CoreMapG (CoreMapG a)
-&gt; CoreMapG (CoreMapG a)
forall (m :: * -&gt; *) a.
(Eq (Key m), TrieMap m) =&gt;
Key m -&gt; XT a -&gt; GenMap m a -&gt; GenMap m a
</span><a href="GHC.Data.TrieMap.html#xtG"><span class="hs-identifier hs-var">xtG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; CoreExpr -&gt; DeBruijn CoreExpr
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856305"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856303"><span class="hs-identifier hs-var">e2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-325"></span><span>                                                 </span><span class="annot"><span class="annottext">(XT (CoreMapG a) -&gt; CoreMapG (CoreMapG a) -&gt; CoreMapG (CoreMapG a))
-&gt; (CoreMapG a -&gt; CoreMapG a)
-&gt; CoreMapG (CoreMapG a)
-&gt; CoreMapG (CoreMapG a)
forall (m2 :: * -&gt; *) a (m1 :: * -&gt; *).
TrieMap m2 =&gt;
(XT (m2 a) -&gt; m1 (m2 a) -&gt; m1 (m2 a))
-&gt; (m2 a -&gt; m2 a) -&gt; m1 (m2 a) -&gt; m1 (m2 a)
</span><a href="GHC.Data.TrieMap.html#%7C%3E%3E"><span class="hs-operator hs-var">|&gt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Key CoreMapX -&gt; XT a -&gt; CoreMapG a -&gt; CoreMapG a
forall (m :: * -&gt; *) a.
(Eq (Key m), TrieMap m) =&gt;
Key m -&gt; XT a -&gt; GenMap m a -&gt; GenMap m a
</span><a href="GHC.Data.TrieMap.html#xtG"><span class="hs-identifier hs-var">xtG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; CoreExpr -&gt; DeBruijn CoreExpr
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856305"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856304"><span class="hs-identifier hs-var">e1</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680856302"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-326"></span><span class="annot"><a href="GHC.Core.Map.html#xtE"><span class="hs-identifier hs-var">xtE</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-type">D</span></a></span><span> </span><span id="local-6989586621680856300"><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856300"><span class="hs-identifier hs-var">env</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Lam"><span class="hs-identifier hs-type">Lam</span></a></span><span> </span><span id="local-6989586621680856299"><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680856299"><span class="hs-identifier hs-var">v</span></a></span></span><span> </span><span id="local-6989586621680856298"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856298"><span class="hs-identifier hs-var">e</span></a></span></span><span class="hs-special">)</span><span class="hs-special">)</span><span>            </span><span id="local-6989586621680856297"><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680856297"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span id="local-6989586621680856296"><span class="annot"><span class="annottext">CoreMapX a
</span><a href="#local-6989586621680856296"><span class="hs-identifier hs-var">m</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoreMapX a
</span><a href="#local-6989586621680856296"><span class="hs-identifier hs-var">m</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">cm_lam :: CoreMapG (BndrMap a)
</span><a href="GHC.Core.Map.html#cm_lam"><span class="hs-identifier hs-var">cm_lam</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoreMapX a -&gt; CoreMapG (BndrMap a)
forall a. CoreMapX a -&gt; CoreMapG (BndrMap a)
</span><a href="GHC.Core.Map.html#cm_lam"><span class="hs-identifier hs-var hs-var">cm_lam</span></a></span><span> </span><span class="annot"><span class="annottext">CoreMapX a
</span><a href="#local-6989586621680856296"><span class="hs-identifier hs-var">m</span></a></span><span>
</span><span id="line-327"></span><span>                                                 </span><span class="annot"><span class="annottext">CoreMapG (BndrMap a)
-&gt; (CoreMapG (BndrMap a) -&gt; CoreMapG (BndrMap a))
-&gt; CoreMapG (BndrMap a)
forall a b. a -&gt; (a -&gt; b) -&gt; b
</span><a href="GHC.Data.TrieMap.html#%7C%3E"><span class="hs-operator hs-var">|&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Key CoreMapX
-&gt; XT (BndrMap a) -&gt; CoreMapG (BndrMap a) -&gt; CoreMapG (BndrMap a)
forall (m :: * -&gt; *) a.
(Eq (Key m), TrieMap m) =&gt;
Key m -&gt; XT a -&gt; GenMap m a -&gt; GenMap m a
</span><a href="GHC.Data.TrieMap.html#xtG"><span class="hs-identifier hs-var">xtG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; CoreExpr -&gt; DeBruijn CoreExpr
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; Id -&gt; CmEnv
</span><a href="GHC.Core.Map.html#extendCME"><span class="hs-identifier hs-var">extendCME</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856300"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680856299"><span class="hs-identifier hs-var">v</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856298"><span class="hs-identifier hs-var">e</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-328"></span><span>                                                 </span><span class="annot"><span class="annottext">(XT (BndrMap a) -&gt; CoreMapG (BndrMap a) -&gt; CoreMapG (BndrMap a))
-&gt; (BndrMap a -&gt; BndrMap a)
-&gt; CoreMapG (BndrMap a)
-&gt; CoreMapG (BndrMap a)
forall (m2 :: * -&gt; *) a (m1 :: * -&gt; *).
TrieMap m2 =&gt;
(XT (m2 a) -&gt; m1 (m2 a) -&gt; m1 (m2 a))
-&gt; (m2 a -&gt; m2 a) -&gt; m1 (m2 a) -&gt; m1 (m2 a)
</span><a href="GHC.Data.TrieMap.html#%7C%3E%3E"><span class="hs-operator hs-var">|&gt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; Id -&gt; XT a -&gt; BndrMap a -&gt; BndrMap a
forall a. CmEnv -&gt; Id -&gt; XT a -&gt; BndrMap a -&gt; BndrMap a
</span><a href="GHC.Core.Map.html#xtBndr"><span class="hs-identifier hs-var">xtBndr</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856300"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680856299"><span class="hs-identifier hs-var">v</span></a></span><span> </span><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680856297"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-329"></span><span class="annot"><a href="GHC.Core.Map.html#xtE"><span class="hs-identifier hs-var">xtE</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-type">D</span></a></span><span> </span><span id="local-6989586621680856294"><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856294"><span class="hs-identifier hs-var">env</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Let"><span class="hs-identifier hs-type">Let</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#NonRec"><span class="hs-identifier hs-type">NonRec</span></a></span><span> </span><span id="local-6989586621680856293"><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680856293"><span class="hs-identifier hs-var">b</span></a></span></span><span> </span><span id="local-6989586621680856292"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856292"><span class="hs-identifier hs-var">r</span></a></span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621680856291"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856291"><span class="hs-identifier hs-var">e</span></a></span></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span id="local-6989586621680856290"><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680856290"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span id="local-6989586621680856289"><span class="annot"><span class="annottext">CoreMapX a
</span><a href="#local-6989586621680856289"><span class="hs-identifier hs-var">m</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoreMapX a
</span><a href="#local-6989586621680856289"><span class="hs-identifier hs-var">m</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">cm_letn :: CoreMapG (CoreMapG (BndrMap a))
</span><a href="GHC.Core.Map.html#cm_letn"><span class="hs-identifier hs-var">cm_letn</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoreMapX a -&gt; CoreMapG (CoreMapG (BndrMap a))
forall a. CoreMapX a -&gt; CoreMapG (CoreMapG (BndrMap a))
</span><a href="GHC.Core.Map.html#cm_letn"><span class="hs-identifier hs-var hs-var">cm_letn</span></a></span><span> </span><span class="annot"><span class="annottext">CoreMapX a
</span><a href="#local-6989586621680856289"><span class="hs-identifier hs-var">m</span></a></span><span>
</span><span id="line-330"></span><span>                                                 </span><span class="annot"><span class="annottext">CoreMapG (CoreMapG (BndrMap a))
-&gt; (CoreMapG (CoreMapG (BndrMap a))
    -&gt; CoreMapG (CoreMapG (BndrMap a)))
-&gt; CoreMapG (CoreMapG (BndrMap a))
forall a b. a -&gt; (a -&gt; b) -&gt; b
</span><a href="GHC.Data.TrieMap.html#%7C%3E"><span class="hs-operator hs-var">|&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Key CoreMapX
-&gt; XT (CoreMapG (BndrMap a))
-&gt; CoreMapG (CoreMapG (BndrMap a))
-&gt; CoreMapG (CoreMapG (BndrMap a))
forall (m :: * -&gt; *) a.
(Eq (Key m), TrieMap m) =&gt;
Key m -&gt; XT a -&gt; GenMap m a -&gt; GenMap m a
</span><a href="GHC.Data.TrieMap.html#xtG"><span class="hs-identifier hs-var">xtG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; CoreExpr -&gt; DeBruijn CoreExpr
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; Id -&gt; CmEnv
</span><a href="GHC.Core.Map.html#extendCME"><span class="hs-identifier hs-var">extendCME</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856294"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680856293"><span class="hs-identifier hs-var">b</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856291"><span class="hs-identifier hs-var">e</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-331"></span><span>                                                 </span><span class="annot"><span class="annottext">(XT (CoreMapG (BndrMap a))
 -&gt; CoreMapG (CoreMapG (BndrMap a))
 -&gt; CoreMapG (CoreMapG (BndrMap a)))
-&gt; (CoreMapG (BndrMap a) -&gt; CoreMapG (BndrMap a))
-&gt; CoreMapG (CoreMapG (BndrMap a))
-&gt; CoreMapG (CoreMapG (BndrMap a))
forall (m2 :: * -&gt; *) a (m1 :: * -&gt; *).
TrieMap m2 =&gt;
(XT (m2 a) -&gt; m1 (m2 a) -&gt; m1 (m2 a))
-&gt; (m2 a -&gt; m2 a) -&gt; m1 (m2 a) -&gt; m1 (m2 a)
</span><a href="GHC.Data.TrieMap.html#%7C%3E%3E"><span class="hs-operator hs-var">|&gt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Key CoreMapX
-&gt; XT (BndrMap a) -&gt; CoreMapG (BndrMap a) -&gt; CoreMapG (BndrMap a)
forall (m :: * -&gt; *) a.
(Eq (Key m), TrieMap m) =&gt;
Key m -&gt; XT a -&gt; GenMap m a -&gt; GenMap m a
</span><a href="GHC.Data.TrieMap.html#xtG"><span class="hs-identifier hs-var">xtG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; CoreExpr -&gt; DeBruijn CoreExpr
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856294"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856292"><span class="hs-identifier hs-var">r</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-332"></span><span>                                                 </span><span class="annot"><span class="annottext">(XT (BndrMap a) -&gt; CoreMapG (BndrMap a) -&gt; CoreMapG (BndrMap a))
-&gt; (BndrMap a -&gt; BndrMap a)
-&gt; CoreMapG (BndrMap a)
-&gt; CoreMapG (BndrMap a)
forall (m2 :: * -&gt; *) a (m1 :: * -&gt; *).
TrieMap m2 =&gt;
(XT (m2 a) -&gt; m1 (m2 a) -&gt; m1 (m2 a))
-&gt; (m2 a -&gt; m2 a) -&gt; m1 (m2 a) -&gt; m1 (m2 a)
</span><a href="GHC.Data.TrieMap.html#%7C%3E%3E"><span class="hs-operator hs-var">|&gt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; Id -&gt; XT a -&gt; BndrMap a -&gt; BndrMap a
forall a. CmEnv -&gt; Id -&gt; XT a -&gt; BndrMap a -&gt; BndrMap a
</span><a href="GHC.Core.Map.html#xtBndr"><span class="hs-identifier hs-var">xtBndr</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856294"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680856293"><span class="hs-identifier hs-var">b</span></a></span><span> </span><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680856290"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-333"></span><span class="annot"><a href="GHC.Core.Map.html#xtE"><span class="hs-identifier hs-var">xtE</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-type">D</span></a></span><span> </span><span id="local-6989586621680856288"><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856288"><span class="hs-identifier hs-var">env</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Let"><span class="hs-identifier hs-type">Let</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Rec"><span class="hs-identifier hs-type">Rec</span></a></span><span> </span><span id="local-6989586621680856287"><span class="annot"><span class="annottext">[(Id, CoreExpr)]
</span><a href="#local-6989586621680856287"><span class="hs-identifier hs-var">prs</span></a></span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621680856286"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856286"><span class="hs-identifier hs-var">e</span></a></span></span><span class="hs-special">)</span><span class="hs-special">)</span><span>    </span><span id="local-6989586621680856285"><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680856285"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span id="local-6989586621680856284"><span class="annot"><span class="annottext">CoreMapX a
</span><a href="#local-6989586621680856284"><span class="hs-identifier hs-var">m</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoreMapX a
</span><a href="#local-6989586621680856284"><span class="hs-identifier hs-var">m</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">cm_letr :: ListMap (GenMap CoreMapX) (CoreMapG (ListMap BndrMap a))
</span><a href="GHC.Core.Map.html#cm_letr"><span class="hs-identifier hs-var">cm_letr</span></a></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-334"></span><span>                                              </span><span class="hs-keyword">let</span><span> </span><span class="hs-special">(</span><span id="local-6989586621680856283"><span class="annot"><span class="annottext">[Id]
</span><a href="#local-6989586621680856283"><span class="hs-identifier hs-var">bndrs</span></a></span></span><span class="hs-special">,</span><span id="local-6989586621680856282"><span class="annot"><span class="annottext">[CoreExpr]
</span><a href="#local-6989586621680856282"><span class="hs-identifier hs-var">rhss</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[(Id, CoreExpr)] -&gt; ([Id], [CoreExpr])
forall a b. [(a, b)] -&gt; ([a], [b])
</span><a href="../../base/src/GHC.List.html#unzip"><span class="hs-identifier hs-var">unzip</span></a></span><span> </span><span class="annot"><span class="annottext">[(Id, CoreExpr)]
</span><a href="#local-6989586621680856287"><span class="hs-identifier hs-var">prs</span></a></span><span>
</span><span id="line-335"></span><span>                                                  </span><span id="local-6989586621680856281"><span class="annot"><span class="annottext">env1 :: CmEnv
</span><a href="#local-6989586621680856281"><span class="hs-identifier hs-var hs-var">env1</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; [Id] -&gt; CmEnv
</span><a href="GHC.Core.Map.html#extendCMEs"><span class="hs-identifier hs-var">extendCMEs</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856288"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">[Id]
</span><a href="#local-6989586621680856283"><span class="hs-identifier hs-var">bndrs</span></a></span><span>
</span><span id="line-336"></span><span>                                              </span><span class="hs-keyword">in</span><span> </span><span class="annot"><span class="annottext">CoreMapX a
-&gt; ListMap (GenMap CoreMapX) (CoreMapG (ListMap BndrMap a))
forall a.
CoreMapX a
-&gt; ListMap (GenMap CoreMapX) (CoreMapG (ListMap BndrMap a))
</span><a href="GHC.Core.Map.html#cm_letr"><span class="hs-identifier hs-var hs-var">cm_letr</span></a></span><span> </span><span class="annot"><span class="annottext">CoreMapX a
</span><a href="#local-6989586621680856284"><span class="hs-identifier hs-var">m</span></a></span><span>
</span><span id="line-337"></span><span>                                                 </span><span class="annot"><span class="annottext">ListMap (GenMap CoreMapX) (CoreMapG (ListMap BndrMap a))
-&gt; (ListMap (GenMap CoreMapX) (CoreMapG (ListMap BndrMap a))
    -&gt; ListMap (GenMap CoreMapX) (CoreMapG (ListMap BndrMap a)))
-&gt; ListMap (GenMap CoreMapX) (CoreMapG (ListMap BndrMap a))
forall a b. a -&gt; (a -&gt; b) -&gt; b
</span><a href="GHC.Data.TrieMap.html#%7C%3E"><span class="hs-operator hs-var">|&gt;</span></a></span><span>  </span><span class="annot"><span class="annottext">(forall b. CoreExpr -&gt; XT b -&gt; CoreMapG b -&gt; CoreMapG b)
-&gt; [CoreExpr]
-&gt; XT (CoreMapG (ListMap BndrMap a))
-&gt; ListMap (GenMap CoreMapX) (CoreMapG (ListMap BndrMap a))
-&gt; ListMap (GenMap CoreMapX) (CoreMapG (ListMap BndrMap a))
forall (m :: * -&gt; *) k a.
TrieMap m =&gt;
(forall b. k -&gt; XT b -&gt; m b -&gt; m b)
-&gt; [k] -&gt; XT a -&gt; ListMap m a -&gt; ListMap m a
</span><a href="GHC.Data.TrieMap.html#xtList"><span class="hs-identifier hs-var">xtList</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DeBruijn CoreExpr -&gt; XT b -&gt; GenMap CoreMapX b -&gt; GenMap CoreMapX b
forall (m :: * -&gt; *) a.
(Eq (Key m), TrieMap m) =&gt;
Key m -&gt; XT a -&gt; GenMap m a -&gt; GenMap m a
</span><a href="GHC.Data.TrieMap.html#xtG"><span class="hs-identifier hs-var">xtG</span></a></span><span> </span><span class="annot"><span class="annottext">(DeBruijn CoreExpr
 -&gt; XT b -&gt; GenMap CoreMapX b -&gt; GenMap CoreMapX b)
-&gt; (CoreExpr -&gt; DeBruijn CoreExpr)
-&gt; CoreExpr
-&gt; XT b
-&gt; GenMap CoreMapX b
-&gt; GenMap CoreMapX b
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; CoreExpr -&gt; DeBruijn CoreExpr
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856281"><span class="hs-identifier hs-var">env1</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[CoreExpr]
</span><a href="#local-6989586621680856282"><span class="hs-identifier hs-var">rhss</span></a></span><span>
</span><span id="line-338"></span><span>                                                 </span><span class="annot"><span class="annottext">(XT (CoreMapG (ListMap BndrMap a))
 -&gt; ListMap (GenMap CoreMapX) (CoreMapG (ListMap BndrMap a))
 -&gt; ListMap (GenMap CoreMapX) (CoreMapG (ListMap BndrMap a)))
-&gt; (CoreMapG (ListMap BndrMap a) -&gt; CoreMapG (ListMap BndrMap a))
-&gt; ListMap (GenMap CoreMapX) (CoreMapG (ListMap BndrMap a))
-&gt; ListMap (GenMap CoreMapX) (CoreMapG (ListMap BndrMap a))
forall (m2 :: * -&gt; *) a (m1 :: * -&gt; *).
TrieMap m2 =&gt;
(XT (m2 a) -&gt; m1 (m2 a) -&gt; m1 (m2 a))
-&gt; (m2 a -&gt; m2 a) -&gt; m1 (m2 a) -&gt; m1 (m2 a)
</span><a href="GHC.Data.TrieMap.html#%7C%3E%3E"><span class="hs-operator hs-var">|&gt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Key CoreMapX
-&gt; XT (ListMap BndrMap a)
-&gt; CoreMapG (ListMap BndrMap a)
-&gt; CoreMapG (ListMap BndrMap a)
forall (m :: * -&gt; *) a.
(Eq (Key m), TrieMap m) =&gt;
Key m -&gt; XT a -&gt; GenMap m a -&gt; GenMap m a
</span><a href="GHC.Data.TrieMap.html#xtG"><span class="hs-identifier hs-var">xtG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; CoreExpr -&gt; DeBruijn CoreExpr
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856281"><span class="hs-identifier hs-var">env1</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856286"><span class="hs-identifier hs-var">e</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-339"></span><span>                                                 </span><span class="annot"><span class="annottext">(XT (ListMap BndrMap a)
 -&gt; CoreMapG (ListMap BndrMap a) -&gt; CoreMapG (ListMap BndrMap a))
-&gt; (ListMap BndrMap a -&gt; ListMap BndrMap a)
-&gt; CoreMapG (ListMap BndrMap a)
-&gt; CoreMapG (ListMap BndrMap a)
forall (m2 :: * -&gt; *) a (m1 :: * -&gt; *).
TrieMap m2 =&gt;
(XT (m2 a) -&gt; m1 (m2 a) -&gt; m1 (m2 a))
-&gt; (m2 a -&gt; m2 a) -&gt; m1 (m2 a) -&gt; m1 (m2 a)
</span><a href="GHC.Data.TrieMap.html#%7C%3E%3E"><span class="hs-operator hs-var">|&gt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">(forall b. Id -&gt; XT b -&gt; BndrMap b -&gt; BndrMap b)
-&gt; [Id] -&gt; XT a -&gt; ListMap BndrMap a -&gt; ListMap BndrMap a
forall (m :: * -&gt; *) k a.
TrieMap m =&gt;
(forall b. k -&gt; XT b -&gt; m b -&gt; m b)
-&gt; [k] -&gt; XT a -&gt; ListMap m a -&gt; ListMap m a
</span><a href="GHC.Data.TrieMap.html#xtList"><span class="hs-identifier hs-var">xtList</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; Id -&gt; XT b -&gt; BndrMap b -&gt; BndrMap b
forall a. CmEnv -&gt; Id -&gt; XT a -&gt; BndrMap a -&gt; BndrMap a
</span><a href="GHC.Core.Map.html#xtBndr"><span class="hs-identifier hs-var">xtBndr</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856281"><span class="hs-identifier hs-var">env1</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-340"></span><span>                                                            </span><span class="annot"><span class="annottext">[Id]
</span><a href="#local-6989586621680856283"><span class="hs-identifier hs-var">bndrs</span></a></span><span> </span><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680856285"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-341"></span><span class="annot"><a href="GHC.Core.Map.html#xtE"><span class="hs-identifier hs-var">xtE</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-type">D</span></a></span><span> </span><span id="local-6989586621680856277"><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856277"><span class="hs-identifier hs-var">env</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Case"><span class="hs-identifier hs-type">Case</span></a></span><span> </span><span id="local-6989586621680856276"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856276"><span class="hs-identifier hs-var">e</span></a></span></span><span> </span><span id="local-6989586621680856275"><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680856275"><span class="hs-identifier hs-var">b</span></a></span></span><span> </span><span id="local-6989586621680856274"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680856274"><span class="hs-identifier hs-var">ty</span></a></span></span><span> </span><span id="local-6989586621680856273"><span class="annot"><span class="annottext">[CoreAlt]
</span><a href="#local-6989586621680856273"><span class="hs-keyword hs-var">as</span></a></span></span><span class="hs-special">)</span><span class="hs-special">)</span><span>     </span><span id="local-6989586621680856272"><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680856272"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span id="local-6989586621680856271"><span class="annot"><span class="annottext">CoreMapX a
</span><a href="#local-6989586621680856271"><span class="hs-identifier hs-var">m</span></a></span></span><span>
</span><span id="line-342"></span><span>                     </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">[CoreAlt] -&gt; Bool
forall (t :: * -&gt; *) a. Foldable t =&gt; t a -&gt; Bool
</span><a href="../../base/src/Data.Foldable.html#null"><span class="hs-identifier hs-var">null</span></a></span><span> </span><span class="annot"><span class="annottext">[CoreAlt]
</span><a href="#local-6989586621680856273"><span class="hs-keyword hs-var">as</span></a></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoreMapX a
</span><a href="#local-6989586621680856271"><span class="hs-identifier hs-var">m</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">cm_ecase :: CoreMapG (TypeMapG a)
</span><a href="GHC.Core.Map.html#cm_ecase"><span class="hs-identifier hs-var">cm_ecase</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoreMapX a -&gt; CoreMapG (TypeMapG a)
forall a. CoreMapX a -&gt; CoreMapG (TypeMapG a)
</span><a href="GHC.Core.Map.html#cm_ecase"><span class="hs-identifier hs-var hs-var">cm_ecase</span></a></span><span> </span><span class="annot"><span class="annottext">CoreMapX a
</span><a href="#local-6989586621680856271"><span class="hs-identifier hs-var">m</span></a></span><span> </span><span class="annot"><span class="annottext">CoreMapG (TypeMapG a)
-&gt; (CoreMapG (TypeMapG a) -&gt; CoreMapG (TypeMapG a))
-&gt; CoreMapG (TypeMapG a)
forall a b. a -&gt; (a -&gt; b) -&gt; b
</span><a href="GHC.Data.TrieMap.html#%7C%3E"><span class="hs-operator hs-var">|&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Key CoreMapX
-&gt; XT (TypeMapG a)
-&gt; CoreMapG (TypeMapG a)
-&gt; CoreMapG (TypeMapG a)
forall (m :: * -&gt; *) a.
(Eq (Key m), TrieMap m) =&gt;
Key m -&gt; XT a -&gt; GenMap m a -&gt; GenMap m a
</span><a href="GHC.Data.TrieMap.html#xtG"><span class="hs-identifier hs-var">xtG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; CoreExpr -&gt; DeBruijn CoreExpr
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856277"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856276"><span class="hs-identifier hs-var">e</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-343"></span><span>                                                 </span><span class="annot"><span class="annottext">(XT (TypeMapG a) -&gt; CoreMapG (TypeMapG a) -&gt; CoreMapG (TypeMapG a))
-&gt; (TypeMapG a -&gt; TypeMapG a)
-&gt; CoreMapG (TypeMapG a)
-&gt; CoreMapG (TypeMapG a)
forall (m2 :: * -&gt; *) a (m1 :: * -&gt; *).
TrieMap m2 =&gt;
(XT (m2 a) -&gt; m1 (m2 a) -&gt; m1 (m2 a))
-&gt; (m2 a -&gt; m2 a) -&gt; m1 (m2 a) -&gt; m1 (m2 a)
</span><a href="GHC.Data.TrieMap.html#%7C%3E%3E"><span class="hs-operator hs-var">|&gt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Key TypeMapX -&gt; XT a -&gt; TypeMapG a -&gt; TypeMapG a
forall (m :: * -&gt; *) a.
(Eq (Key m), TrieMap m) =&gt;
Key m -&gt; XT a -&gt; GenMap m a -&gt; GenMap m a
</span><a href="GHC.Data.TrieMap.html#xtG"><span class="hs-identifier hs-var">xtG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; Type -&gt; DeBruijn Type
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856277"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680856274"><span class="hs-identifier hs-var">ty</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680856272"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-344"></span><span>                     </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoreMapX a
</span><a href="#local-6989586621680856271"><span class="hs-identifier hs-var">m</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">cm_case :: CoreMapG (ListMap AltMap a)
</span><a href="GHC.Core.Map.html#cm_case"><span class="hs-identifier hs-var">cm_case</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoreMapX a -&gt; CoreMapG (ListMap AltMap a)
forall a. CoreMapX a -&gt; CoreMapG (ListMap AltMap a)
</span><a href="GHC.Core.Map.html#cm_case"><span class="hs-identifier hs-var hs-var">cm_case</span></a></span><span> </span><span class="annot"><span class="annottext">CoreMapX a
</span><a href="#local-6989586621680856271"><span class="hs-identifier hs-var">m</span></a></span><span> </span><span class="annot"><span class="annottext">CoreMapG (ListMap AltMap a)
-&gt; (CoreMapG (ListMap AltMap a) -&gt; CoreMapG (ListMap AltMap a))
-&gt; CoreMapG (ListMap AltMap a)
forall a b. a -&gt; (a -&gt; b) -&gt; b
</span><a href="GHC.Data.TrieMap.html#%7C%3E"><span class="hs-operator hs-var">|&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Key CoreMapX
-&gt; XT (ListMap AltMap a)
-&gt; CoreMapG (ListMap AltMap a)
-&gt; CoreMapG (ListMap AltMap a)
forall (m :: * -&gt; *) a.
(Eq (Key m), TrieMap m) =&gt;
Key m -&gt; XT a -&gt; GenMap m a -&gt; GenMap m a
</span><a href="GHC.Data.TrieMap.html#xtG"><span class="hs-identifier hs-var">xtG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; CoreExpr -&gt; DeBruijn CoreExpr
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856277"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856276"><span class="hs-identifier hs-var">e</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-345"></span><span>                                                 </span><span class="annot"><span class="annottext">(XT (ListMap AltMap a)
 -&gt; CoreMapG (ListMap AltMap a) -&gt; CoreMapG (ListMap AltMap a))
-&gt; (ListMap AltMap a -&gt; ListMap AltMap a)
-&gt; CoreMapG (ListMap AltMap a)
-&gt; CoreMapG (ListMap AltMap a)
forall (m2 :: * -&gt; *) a (m1 :: * -&gt; *).
TrieMap m2 =&gt;
(XT (m2 a) -&gt; m1 (m2 a) -&gt; m1 (m2 a))
-&gt; (m2 a -&gt; m2 a) -&gt; m1 (m2 a) -&gt; m1 (m2 a)
</span><a href="GHC.Data.TrieMap.html#%7C%3E%3E"><span class="hs-operator hs-var">|&gt;&gt;</span></a></span><span> </span><span class="hs-keyword">let</span><span> </span><span id="local-6989586621680856270"><span class="annot"><span class="annottext">env1 :: CmEnv
</span><a href="#local-6989586621680856270"><span class="hs-identifier hs-var hs-var">env1</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; Id -&gt; CmEnv
</span><a href="GHC.Core.Map.html#extendCME"><span class="hs-identifier hs-var">extendCME</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856277"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680856275"><span class="hs-identifier hs-var">b</span></a></span><span>
</span><span id="line-346"></span><span>                                                     </span><span class="hs-keyword">in</span><span> </span><span class="annot"><span class="annottext">(forall b. CoreAlt -&gt; XT b -&gt; AltMap b -&gt; AltMap b)
-&gt; [CoreAlt] -&gt; XT a -&gt; ListMap AltMap a -&gt; ListMap AltMap a
forall (m :: * -&gt; *) k a.
TrieMap m =&gt;
(forall b. k -&gt; XT b -&gt; m b -&gt; m b)
-&gt; [k] -&gt; XT a -&gt; ListMap m a -&gt; ListMap m a
</span><a href="GHC.Data.TrieMap.html#xtList"><span class="hs-identifier hs-var">xtList</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; CoreAlt -&gt; XT b -&gt; AltMap b -&gt; AltMap b
forall a. CmEnv -&gt; CoreAlt -&gt; XT a -&gt; AltMap a -&gt; AltMap a
</span><a href="GHC.Core.Map.html#xtA"><span class="hs-identifier hs-var">xtA</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856270"><span class="hs-identifier hs-var">env1</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[CoreAlt]
</span><a href="#local-6989586621680856273"><span class="hs-keyword hs-var">as</span></a></span><span> </span><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680856272"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-347"></span><span>
</span><span id="line-348"></span><span class="hs-comment">-- TODO: this seems a bit dodgy, see 'eqTickish'</span><span>
</span><span id="line-349"></span><span class="hs-keyword">type</span><span> </span><span id="TickishMap"><span class="annot"><a href="GHC.Core.Map.html#TickishMap"><span class="hs-identifier hs-var">TickishMap</span></a></span></span><span> </span><span id="local-6989586621680856268"><span class="annot"><a href="#local-6989586621680856268"><span class="hs-identifier hs-type">a</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="../../containers/src/Data.Map.Internal.html#Map"><span class="hs-identifier hs-type">Map.Map</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Tickish"><span class="hs-identifier hs-type">Tickish</span></a></span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Id"><span class="hs-identifier hs-type">Id</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><a href="#local-6989586621680856268"><span class="hs-identifier hs-type">a</span></a></span><span>
</span><span id="line-350"></span><span id="local-6989586621680857128"><span class="annot"><a href="GHC.Core.Map.html#lkTickish"><span class="hs-identifier hs-type">lkTickish</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.html#Tickish"><span class="hs-identifier hs-type">Tickish</span></a></span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Id"><span class="hs-identifier hs-type">Id</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#TickishMap"><span class="hs-identifier hs-type">TickishMap</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857128"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857128"><span class="hs-identifier hs-type">a</span></a></span></span><span>
</span><span id="line-351"></span><span id="lkTickish"><span class="annot"><span class="annottext">lkTickish :: forall a. Tickish Id -&gt; TickishMap a -&gt; Maybe a
</span><a href="GHC.Core.Map.html#lkTickish"><span class="hs-identifier hs-var hs-var">lkTickish</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Tickish Id -&gt; Map (Tickish Id) a -&gt; Maybe a
forall (m :: * -&gt; *) b. TrieMap m =&gt; Key m -&gt; m b -&gt; Maybe b
</span><a href="GHC.Data.TrieMap.html#lookupTM"><span class="hs-identifier hs-var">lookupTM</span></a></span><span>
</span><span id="line-352"></span><span>
</span><span id="line-353"></span><span id="local-6989586621680857109"><span class="annot"><a href="GHC.Core.Map.html#xtTickish"><span class="hs-identifier hs-type">xtTickish</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.html#Tickish"><span class="hs-identifier hs-type">Tickish</span></a></span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Id"><span class="hs-identifier hs-type">Id</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Data.TrieMap.html#XT"><span class="hs-identifier hs-type">XT</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857109"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#TickishMap"><span class="hs-identifier hs-type">TickishMap</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857109"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#TickishMap"><span class="hs-identifier hs-type">TickishMap</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857109"><span class="hs-identifier hs-type">a</span></a></span></span><span>
</span><span id="line-354"></span><span id="xtTickish"><span class="annot"><span class="annottext">xtTickish :: forall a. Tickish Id -&gt; XT a -&gt; TickishMap a -&gt; TickishMap a
</span><a href="GHC.Core.Map.html#xtTickish"><span class="hs-identifier hs-var hs-var">xtTickish</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Tickish Id
-&gt; (Maybe a -&gt; Maybe a) -&gt; Map (Tickish Id) a -&gt; Map (Tickish Id) a
forall (m :: * -&gt; *) b. TrieMap m =&gt; Key m -&gt; XT b -&gt; m b -&gt; m b
</span><a href="GHC.Data.TrieMap.html#alterTM"><span class="hs-identifier hs-var">alterTM</span></a></span><span>
</span><span id="line-355"></span><span>
</span><span id="line-356"></span><span class="hs-comment">------------------------</span><span>
</span><span id="line-357"></span><span class="hs-keyword">data</span><span> </span><span id="AltMap"><span class="annot"><a href="GHC.Core.Map.html#AltMap"><span class="hs-identifier hs-var">AltMap</span></a></span></span><span> </span><span id="local-6989586621680857097"><span class="annot"><a href="#local-6989586621680857097"><span class="hs-identifier hs-type">a</span></a></span></span><span>   </span><span class="hs-comment">-- A single alternative</span><span>
</span><span id="line-358"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span id="AM"><span class="annot"><a href="GHC.Core.Map.html#AM"><span class="hs-identifier hs-var">AM</span></a></span></span><span> </span><span class="hs-special">{</span><span> </span><span id="am_deflt"><span class="annot"><span class="annottext">forall a. AltMap a -&gt; CoreMapG a
</span><a href="GHC.Core.Map.html#am_deflt"><span class="hs-identifier hs-var hs-var">am_deflt</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CoreMapG"><span class="hs-identifier hs-type">CoreMapG</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857097"><span class="hs-identifier hs-type">a</span></a></span><span>
</span><span id="line-359"></span><span>       </span><span class="hs-special">,</span><span> </span><span id="am_data"><span class="annot"><span class="annottext">forall a. AltMap a -&gt; DNameEnv (CoreMapG a)
</span><a href="GHC.Core.Map.html#am_data"><span class="hs-identifier hs-var hs-var">am_data</span></a></span></span><span>  </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.Env.html#DNameEnv"><span class="hs-identifier hs-type">DNameEnv</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#CoreMapG"><span class="hs-identifier hs-type">CoreMapG</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857097"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-360"></span><span>       </span><span class="hs-special">,</span><span> </span><span id="am_lit"><span class="annot"><span class="annottext">forall a. AltMap a -&gt; LiteralMap (CoreMapG a)
</span><a href="GHC.Core.Map.html#am_lit"><span class="hs-identifier hs-var hs-var">am_lit</span></a></span></span><span>   </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Data.TrieMap.html#LiteralMap"><span class="hs-identifier hs-type">LiteralMap</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#CoreMapG"><span class="hs-identifier hs-type">CoreMapG</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857097"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-361"></span><span>
</span><span id="line-362"></span><span class="hs-keyword">instance</span><span> </span><span class="annot"><a href="GHC.Data.TrieMap.html#TrieMap"><span class="hs-identifier hs-type">TrieMap</span></a></span><span> </span><span class="annot"><a href="GHC.Core.Map.html#AltMap"><span class="hs-identifier hs-type">AltMap</span></a></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-363"></span><span>   </span><span class="hs-keyword">type</span><span> </span><span id="Key"><span class="annot"><a href="GHC.Data.TrieMap.html#Key"><span class="hs-identifier hs-var">Key</span></a></span></span><span> </span><span class="annot"><a href="GHC.Core.Map.html#AltMap"><span class="hs-identifier hs-type">AltMap</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Core.html#CoreAlt"><span class="hs-identifier hs-type">CoreAlt</span></a></span><span>
</span><span id="line-364"></span><span>   </span><span id="local-6989586621680856246"><span class="annot"><span class="annottext">emptyTM :: forall a. AltMap a
</span><a href="#local-6989586621680856246"><span class="hs-identifier hs-var hs-var hs-var hs-var">emptyTM</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">AM :: forall a.
CoreMapG a
-&gt; DNameEnv (CoreMapG a) -&gt; LiteralMap (CoreMapG a) -&gt; AltMap a
</span><a href="GHC.Core.Map.html#AM"><span class="hs-identifier hs-type">AM</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">am_deflt :: CoreMapG a
</span><a href="GHC.Core.Map.html#am_deflt"><span class="hs-identifier hs-var">am_deflt</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoreMapG a
forall (m :: * -&gt; *) a. TrieMap m =&gt; m a
</span><a href="GHC.Data.TrieMap.html#emptyTM"><span class="hs-identifier hs-var">emptyTM</span></a></span><span>
</span><span id="line-365"></span><span>                 </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">am_data :: DNameEnv (CoreMapG a)
</span><a href="GHC.Core.Map.html#am_data"><span class="hs-identifier hs-var">am_data</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DNameEnv (CoreMapG a)
forall a. DNameEnv a
</span><a href="GHC.Types.Name.Env.html#emptyDNameEnv"><span class="hs-identifier hs-var">emptyDNameEnv</span></a></span><span>
</span><span id="line-366"></span><span>                 </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">am_lit :: LiteralMap (CoreMapG a)
</span><a href="GHC.Core.Map.html#am_lit"><span class="hs-identifier hs-var">am_lit</span></a></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">LiteralMap (CoreMapG a)
forall (m :: * -&gt; *) a. TrieMap m =&gt; m a
</span><a href="GHC.Data.TrieMap.html#emptyTM"><span class="hs-identifier hs-var">emptyTM</span></a></span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-367"></span><span>   </span><span id="local-6989586621680856244"><span class="annot"><span class="annottext">lookupTM :: forall b. Key AltMap -&gt; AltMap b -&gt; Maybe b
</span><a href="#local-6989586621680856244"><span class="hs-identifier hs-var hs-var hs-var hs-var">lookupTM</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; CoreAlt -&gt; AltMap b -&gt; Maybe b
forall a. CmEnv -&gt; CoreAlt -&gt; AltMap a -&gt; Maybe a
</span><a href="GHC.Core.Map.html#lkA"><span class="hs-identifier hs-var">lkA</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="GHC.Core.Map.html#emptyCME"><span class="hs-identifier hs-var">emptyCME</span></a></span><span>
</span><span id="line-368"></span><span>   </span><span id="local-6989586621680856242"><span class="annot"><span class="annottext">alterTM :: forall b. Key AltMap -&gt; XT b -&gt; AltMap b -&gt; AltMap b
</span><a href="#local-6989586621680856242"><span class="hs-identifier hs-var hs-var hs-var hs-var">alterTM</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; CoreAlt -&gt; (Maybe b -&gt; Maybe b) -&gt; AltMap b -&gt; AltMap b
forall a. CmEnv -&gt; CoreAlt -&gt; XT a -&gt; AltMap a -&gt; AltMap a
</span><a href="GHC.Core.Map.html#xtA"><span class="hs-identifier hs-var">xtA</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="GHC.Core.Map.html#emptyCME"><span class="hs-identifier hs-var">emptyCME</span></a></span><span>
</span><span id="line-369"></span><span>   </span><span id="local-6989586621680856241"><span class="annot"><span class="annottext">foldTM :: forall a b. (a -&gt; b -&gt; b) -&gt; AltMap a -&gt; b -&gt; b
</span><a href="#local-6989586621680856241"><span class="hs-identifier hs-var hs-var hs-var hs-var">foldTM</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(a -&gt; b -&gt; b) -&gt; AltMap a -&gt; b -&gt; b
forall a b. (a -&gt; b -&gt; b) -&gt; AltMap a -&gt; b -&gt; b
</span><a href="GHC.Core.Map.html#fdA"><span class="hs-identifier hs-var">fdA</span></a></span><span>
</span><span id="line-370"></span><span>   </span><span id="local-6989586621680856239"><span class="annot"><span class="annottext">mapTM :: forall a b. (a -&gt; b) -&gt; AltMap a -&gt; AltMap b
</span><a href="#local-6989586621680856239"><span class="hs-identifier hs-var hs-var hs-var hs-var">mapTM</span></a></span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(a -&gt; b) -&gt; AltMap a -&gt; AltMap b
forall a b. (a -&gt; b) -&gt; AltMap a -&gt; AltMap b
</span><a href="GHC.Core.Map.html#mapA"><span class="hs-identifier hs-var">mapA</span></a></span><span>
</span><span id="line-371"></span><span>
</span><span id="line-372"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621680856235"><span class="annot"><span class="hs-identifier hs-type">Eq</span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#DeBruijn"><span class="hs-identifier hs-type">DeBruijn</span></a></span><span> </span><span class="annot"><a href="GHC.Core.html#CoreAlt"><span class="hs-identifier hs-type">CoreAlt</span></a></span><span class="hs-special">)</span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-373"></span><span>  </span><span class="annot"><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-type">D</span></a></span><span> </span><span id="local-6989586621680856228"><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856228"><span class="hs-identifier hs-var">env1</span></a></span></span><span> </span><span id="local-6989586621680856227"><span class="annot"><span class="annottext">CoreAlt
</span><a href="#local-6989586621680856227"><span class="hs-identifier hs-var">a1</span></a></span></span><span> </span><span id="local-6989586621680856226"><span class="annot"><span class="annottext">== :: DeBruijn CoreAlt -&gt; DeBruijn CoreAlt -&gt; Bool
</span><span class="hs-operator hs-var hs-var hs-var hs-var">==</span></span></span><span> </span><span class="annot"><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-type">D</span></a></span><span> </span><span id="local-6989586621680856225"><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856225"><span class="hs-identifier hs-var">env2</span></a></span></span><span> </span><span id="local-6989586621680856224"><span class="annot"><span class="annottext">CoreAlt
</span><a href="#local-6989586621680856224"><span class="hs-identifier hs-var">a2</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoreAlt -&gt; CoreAlt -&gt; Bool
</span><a href="#local-6989586621680856223"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="annot"><span class="annottext">CoreAlt
</span><a href="#local-6989586621680856227"><span class="hs-identifier hs-var">a1</span></a></span><span> </span><span class="annot"><span class="annottext">CoreAlt
</span><a href="#local-6989586621680856224"><span class="hs-identifier hs-var">a2</span></a></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-374"></span><span>    </span><span id="local-6989586621680856223"><span class="annot"><span class="annottext">go :: CoreAlt -&gt; CoreAlt -&gt; Bool
</span><a href="#local-6989586621680856223"><span class="hs-identifier hs-var hs-var">go</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">AltCon
</span><a href="GHC.Core.html#DEFAULT"><span class="hs-identifier hs-var">DEFAULT</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[Id]
</span><span class="hs-identifier">_</span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680856221"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856221"><span class="hs-identifier hs-var">rhs1</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">AltCon
</span><a href="GHC.Core.html#DEFAULT"><span class="hs-identifier hs-var">DEFAULT</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[Id]
</span><span class="hs-identifier">_</span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680856220"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856220"><span class="hs-identifier hs-var">rhs2</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-375"></span><span>        </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; CoreExpr -&gt; DeBruijn CoreExpr
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856228"><span class="hs-identifier hs-var">env1</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856221"><span class="hs-identifier hs-var">rhs1</span></a></span><span> </span><span class="annot"><span class="annottext">DeBruijn CoreExpr -&gt; DeBruijn CoreExpr -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; CoreExpr -&gt; DeBruijn CoreExpr
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856225"><span class="hs-identifier hs-var">env2</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856220"><span class="hs-identifier hs-var">rhs2</span></a></span><span>
</span><span id="line-376"></span><span>    </span><span class="annot"><a href="#local-6989586621680856223"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#LitAlt"><span class="hs-identifier hs-type">LitAlt</span></a></span><span> </span><span id="local-6989586621680856218"><span class="annot"><span class="annottext">Literal
</span><a href="#local-6989586621680856218"><span class="hs-identifier hs-var">lit1</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[Id]
</span><span class="hs-identifier">_</span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680856217"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856217"><span class="hs-identifier hs-var">rhs1</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#LitAlt"><span class="hs-identifier hs-type">LitAlt</span></a></span><span> </span><span id="local-6989586621680856216"><span class="annot"><span class="annottext">Literal
</span><a href="#local-6989586621680856216"><span class="hs-identifier hs-var">lit2</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[Id]
</span><span class="hs-identifier">_</span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680856215"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856215"><span class="hs-identifier hs-var">rhs2</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-377"></span><span>        </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Literal
</span><a href="#local-6989586621680856218"><span class="hs-identifier hs-var">lit1</span></a></span><span> </span><span class="annot"><span class="annottext">Literal -&gt; Literal -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">Literal
</span><a href="#local-6989586621680856216"><span class="hs-identifier hs-var">lit2</span></a></span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; Bool
</span><span class="hs-operator hs-var">&amp;&amp;</span></span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; CoreExpr -&gt; DeBruijn CoreExpr
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856228"><span class="hs-identifier hs-var">env1</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856217"><span class="hs-identifier hs-var">rhs1</span></a></span><span> </span><span class="annot"><span class="annottext">DeBruijn CoreExpr -&gt; DeBruijn CoreExpr -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; CoreExpr -&gt; DeBruijn CoreExpr
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856225"><span class="hs-identifier hs-var">env2</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856215"><span class="hs-identifier hs-var">rhs2</span></a></span><span>
</span><span id="line-378"></span><span>    </span><span class="annot"><a href="#local-6989586621680856223"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#DataAlt"><span class="hs-identifier hs-type">DataAlt</span></a></span><span> </span><span id="local-6989586621680856213"><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680856213"><span class="hs-identifier hs-var">dc1</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680856212"><span class="annot"><span class="annottext">[Id]
</span><a href="#local-6989586621680856212"><span class="hs-identifier hs-var">bs1</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680856211"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856211"><span class="hs-identifier hs-var">rhs1</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#DataAlt"><span class="hs-identifier hs-type">DataAlt</span></a></span><span> </span><span id="local-6989586621680856210"><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680856210"><span class="hs-identifier hs-var">dc2</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680856209"><span class="annot"><span class="annottext">[Id]
</span><a href="#local-6989586621680856209"><span class="hs-identifier hs-var">bs2</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680856208"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856208"><span class="hs-identifier hs-var">rhs2</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-379"></span><span>        </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680856213"><span class="hs-identifier hs-var">dc1</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon -&gt; DataCon -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680856210"><span class="hs-identifier hs-var">dc2</span></a></span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; Bool
</span><span class="hs-operator hs-var">&amp;&amp;</span></span><span>
</span><span id="line-380"></span><span>          </span><span class="annot"><span class="annottext">CmEnv -&gt; CoreExpr -&gt; DeBruijn CoreExpr
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; [Id] -&gt; CmEnv
</span><a href="GHC.Core.Map.html#extendCMEs"><span class="hs-identifier hs-var">extendCMEs</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856228"><span class="hs-identifier hs-var">env1</span></a></span><span> </span><span class="annot"><span class="annottext">[Id]
</span><a href="#local-6989586621680856212"><span class="hs-identifier hs-var">bs1</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856211"><span class="hs-identifier hs-var">rhs1</span></a></span><span> </span><span class="annot"><span class="annottext">DeBruijn CoreExpr -&gt; DeBruijn CoreExpr -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; CoreExpr -&gt; DeBruijn CoreExpr
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; [Id] -&gt; CmEnv
</span><a href="GHC.Core.Map.html#extendCMEs"><span class="hs-identifier hs-var">extendCMEs</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856225"><span class="hs-identifier hs-var">env2</span></a></span><span> </span><span class="annot"><span class="annottext">[Id]
</span><a href="#local-6989586621680856209"><span class="hs-identifier hs-var">bs2</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856208"><span class="hs-identifier hs-var">rhs2</span></a></span><span>
</span><span id="line-381"></span><span>    </span><span class="annot"><a href="#local-6989586621680856223"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="annot"><span class="annottext">CoreAlt
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">CoreAlt
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-382"></span><span>
</span><span id="line-383"></span><span id="local-6989586621680856206"><span id="local-6989586621680856207"><span class="annot"><a href="GHC.Core.Map.html#mapA"><span class="hs-identifier hs-type">mapA</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621680856207"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-glyph">-&gt;</span><span class="annot"><a href="#local-6989586621680856206"><span class="hs-identifier hs-type">b</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#AltMap"><span class="hs-identifier hs-type">AltMap</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680856207"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#AltMap"><span class="hs-identifier hs-type">AltMap</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680856206"><span class="hs-identifier hs-type">b</span></a></span></span></span><span>
</span><span id="line-384"></span><span id="mapA"><span class="annot"><span class="annottext">mapA :: forall a b. (a -&gt; b) -&gt; AltMap a -&gt; AltMap b
</span><a href="GHC.Core.Map.html#mapA"><span class="hs-identifier hs-var hs-var">mapA</span></a></span></span><span> </span><span id="local-6989586621680856193"><span class="annot"><span class="annottext">a -&gt; b
</span><a href="#local-6989586621680856193"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#AM"><span class="hs-identifier hs-type">AM</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">am_deflt :: forall a. AltMap a -&gt; CoreMapG a
</span><a href="GHC.Core.Map.html#am_deflt"><span class="hs-identifier hs-var">am_deflt</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680856192"><span class="annot"><span class="annottext">CoreMapG a
</span><a href="#local-6989586621680856192"><span class="hs-identifier hs-var">adeflt</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">am_data :: forall a. AltMap a -&gt; DNameEnv (CoreMapG a)
</span><a href="GHC.Core.Map.html#am_data"><span class="hs-identifier hs-var">am_data</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680856191"><span class="annot"><span class="annottext">DNameEnv (CoreMapG a)
</span><a href="#local-6989586621680856191"><span class="hs-identifier hs-var">adata</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">am_lit :: forall a. AltMap a -&gt; LiteralMap (CoreMapG a)
</span><a href="GHC.Core.Map.html#am_lit"><span class="hs-identifier hs-var">am_lit</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680856190"><span class="annot"><span class="annottext">LiteralMap (CoreMapG a)
</span><a href="#local-6989586621680856190"><span class="hs-identifier hs-var">alit</span></a></span></span><span> </span><span class="hs-special">}</span><span class="hs-special">)</span><span>
</span><span id="line-385"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">AM :: forall a.
CoreMapG a
-&gt; DNameEnv (CoreMapG a) -&gt; LiteralMap (CoreMapG a) -&gt; AltMap a
</span><a href="GHC.Core.Map.html#AM"><span class="hs-identifier hs-type">AM</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">am_deflt :: CoreMapG b
</span><a href="GHC.Core.Map.html#am_deflt"><span class="hs-identifier hs-var">am_deflt</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(a -&gt; b) -&gt; CoreMapG a -&gt; CoreMapG b
forall (m :: * -&gt; *) a b. TrieMap m =&gt; (a -&gt; b) -&gt; m a -&gt; m b
</span><a href="GHC.Data.TrieMap.html#mapTM"><span class="hs-identifier hs-var">mapTM</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b
</span><a href="#local-6989586621680856193"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">CoreMapG a
</span><a href="#local-6989586621680856192"><span class="hs-identifier hs-var">adeflt</span></a></span><span>
</span><span id="line-386"></span><span>       </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">am_data :: DNameEnv (CoreMapG b)
</span><a href="GHC.Core.Map.html#am_data"><span class="hs-identifier hs-var">am_data</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(CoreMapG a -&gt; CoreMapG b)
-&gt; DNameEnv (CoreMapG a) -&gt; DNameEnv (CoreMapG b)
forall (m :: * -&gt; *) a b. TrieMap m =&gt; (a -&gt; b) -&gt; m a -&gt; m b
</span><a href="GHC.Data.TrieMap.html#mapTM"><span class="hs-identifier hs-var">mapTM</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(a -&gt; b) -&gt; CoreMapG a -&gt; CoreMapG b
forall (m :: * -&gt; *) a b. TrieMap m =&gt; (a -&gt; b) -&gt; m a -&gt; m b
</span><a href="GHC.Data.TrieMap.html#mapTM"><span class="hs-identifier hs-var">mapTM</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b
</span><a href="#local-6989586621680856193"><span class="hs-identifier hs-var">f</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">DNameEnv (CoreMapG a)
</span><a href="#local-6989586621680856191"><span class="hs-identifier hs-var">adata</span></a></span><span>
</span><span id="line-387"></span><span>       </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">am_lit :: LiteralMap (CoreMapG b)
</span><a href="GHC.Core.Map.html#am_lit"><span class="hs-identifier hs-var">am_lit</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(CoreMapG a -&gt; CoreMapG b)
-&gt; LiteralMap (CoreMapG a) -&gt; LiteralMap (CoreMapG b)
forall (m :: * -&gt; *) a b. TrieMap m =&gt; (a -&gt; b) -&gt; m a -&gt; m b
</span><a href="GHC.Data.TrieMap.html#mapTM"><span class="hs-identifier hs-var">mapTM</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(a -&gt; b) -&gt; CoreMapG a -&gt; CoreMapG b
forall (m :: * -&gt; *) a b. TrieMap m =&gt; (a -&gt; b) -&gt; m a -&gt; m b
</span><a href="GHC.Data.TrieMap.html#mapTM"><span class="hs-identifier hs-var">mapTM</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b
</span><a href="#local-6989586621680856193"><span class="hs-identifier hs-var">f</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">LiteralMap (CoreMapG a)
</span><a href="#local-6989586621680856190"><span class="hs-identifier hs-var">alit</span></a></span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-388"></span><span>
</span><span id="line-389"></span><span id="local-6989586621680857119"><span class="annot"><a href="GHC.Core.Map.html#lkA"><span class="hs-identifier hs-type">lkA</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CmEnv"><span class="hs-identifier hs-type">CmEnv</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.html#CoreAlt"><span class="hs-identifier hs-type">CoreAlt</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#AltMap"><span class="hs-identifier hs-type">AltMap</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857119"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857119"><span class="hs-identifier hs-type">a</span></a></span></span><span>
</span><span id="line-390"></span><span id="lkA"><span class="annot"><span class="annottext">lkA :: forall a. CmEnv -&gt; CoreAlt -&gt; AltMap a -&gt; Maybe a
</span><a href="GHC.Core.Map.html#lkA"><span class="hs-identifier hs-var hs-var">lkA</span></a></span></span><span> </span><span id="local-6989586621680856176"><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856176"><span class="hs-identifier hs-var">env</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">AltCon
</span><a href="GHC.Core.html#DEFAULT"><span class="hs-identifier hs-var">DEFAULT</span></a></span><span class="hs-special">,</span><span>    </span><span class="annot"><span class="annottext">[Id]
</span><span class="hs-identifier">_</span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680856175"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856175"><span class="hs-identifier hs-var">rhs</span></a></span></span><span class="hs-special">)</span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">AltMap a -&gt; CoreMapG a
forall a. AltMap a -&gt; CoreMapG a
</span><a href="GHC.Core.Map.html#am_deflt"><span class="hs-identifier hs-var hs-var">am_deflt</span></a></span><span> </span><span class="annot"><span class="annottext">(AltMap a -&gt; CoreMapG a)
-&gt; (CoreMapG a -&gt; Maybe a) -&gt; AltMap a -&gt; Maybe a
forall a b c. (a -&gt; b) -&gt; (b -&gt; c) -&gt; a -&gt; c
</span><a href="GHC.Data.TrieMap.html#%3E.%3E"><span class="hs-operator hs-var">&gt;.&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Key CoreMapX -&gt; CoreMapG a -&gt; Maybe a
forall (m :: * -&gt; *) a.
(Eq (Key m), TrieMap m) =&gt;
Key m -&gt; GenMap m a -&gt; Maybe a
</span><a href="GHC.Data.TrieMap.html#lkG"><span class="hs-identifier hs-var">lkG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; CoreExpr -&gt; DeBruijn CoreExpr
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856176"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856175"><span class="hs-identifier hs-var">rhs</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-391"></span><span class="annot"><a href="GHC.Core.Map.html#lkA"><span class="hs-identifier hs-var">lkA</span></a></span><span> </span><span id="local-6989586621680856174"><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856174"><span class="hs-identifier hs-var">env</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#LitAlt"><span class="hs-identifier hs-type">LitAlt</span></a></span><span> </span><span id="local-6989586621680856173"><span class="annot"><span class="annottext">Literal
</span><a href="#local-6989586621680856173"><span class="hs-identifier hs-var">lit</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[Id]
</span><span class="hs-identifier">_</span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680856172"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856172"><span class="hs-identifier hs-var">rhs</span></a></span></span><span class="hs-special">)</span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">AltMap a -&gt; LiteralMap (CoreMapG a)
forall a. AltMap a -&gt; LiteralMap (CoreMapG a)
</span><a href="GHC.Core.Map.html#am_lit"><span class="hs-identifier hs-var hs-var">am_lit</span></a></span><span> </span><span class="annot"><span class="annottext">(AltMap a -&gt; LiteralMap (CoreMapG a))
-&gt; (LiteralMap (CoreMapG a) -&gt; Maybe a) -&gt; AltMap a -&gt; Maybe a
forall a b c. (a -&gt; b) -&gt; (b -&gt; c) -&gt; a -&gt; c
</span><a href="GHC.Data.TrieMap.html#%3E.%3E"><span class="hs-operator hs-var">&gt;.&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Key (Map Literal) -&gt; LiteralMap (CoreMapG a) -&gt; Maybe (CoreMapG a)
forall (m :: * -&gt; *) b. TrieMap m =&gt; Key m -&gt; m b -&gt; Maybe b
</span><a href="GHC.Data.TrieMap.html#lookupTM"><span class="hs-identifier hs-var">lookupTM</span></a></span><span> </span><span class="annot"><span class="annottext">Literal
Key (Map Literal)
</span><a href="#local-6989586621680856173"><span class="hs-identifier hs-var">lit</span></a></span><span> </span><span class="annot"><span class="annottext">(LiteralMap (CoreMapG a) -&gt; Maybe (CoreMapG a))
-&gt; (CoreMapG a -&gt; Maybe a) -&gt; LiteralMap (CoreMapG a) -&gt; Maybe a
forall (m :: * -&gt; *) a b c.
Monad m =&gt;
(a -&gt; m b) -&gt; (b -&gt; m c) -&gt; a -&gt; m c
</span><a href="../../base/src/Control.Monad.html#%3E%3D%3E"><span class="hs-operator hs-var">&gt;=&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Key CoreMapX -&gt; CoreMapG a -&gt; Maybe a
forall (m :: * -&gt; *) a.
(Eq (Key m), TrieMap m) =&gt;
Key m -&gt; GenMap m a -&gt; Maybe a
</span><a href="GHC.Data.TrieMap.html#lkG"><span class="hs-identifier hs-var">lkG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; CoreExpr -&gt; DeBruijn CoreExpr
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856174"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856172"><span class="hs-identifier hs-var">rhs</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-392"></span><span class="annot"><a href="GHC.Core.Map.html#lkA"><span class="hs-identifier hs-var">lkA</span></a></span><span> </span><span id="local-6989586621680856171"><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856171"><span class="hs-identifier hs-var">env</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#DataAlt"><span class="hs-identifier hs-type">DataAlt</span></a></span><span> </span><span id="local-6989586621680856170"><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680856170"><span class="hs-identifier hs-var">dc</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680856169"><span class="annot"><span class="annottext">[Id]
</span><a href="#local-6989586621680856169"><span class="hs-identifier hs-var">bs</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680856168"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856168"><span class="hs-identifier hs-var">rhs</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">AltMap a -&gt; DNameEnv (CoreMapG a)
forall a. AltMap a -&gt; DNameEnv (CoreMapG a)
</span><a href="GHC.Core.Map.html#am_data"><span class="hs-identifier hs-var hs-var">am_data</span></a></span><span> </span><span class="annot"><span class="annottext">(AltMap a -&gt; DNameEnv (CoreMapG a))
-&gt; (DNameEnv (CoreMapG a) -&gt; Maybe a) -&gt; AltMap a -&gt; Maybe a
forall a b c. (a -&gt; b) -&gt; (b -&gt; c) -&gt; a -&gt; c
</span><a href="GHC.Data.TrieMap.html#%3E.%3E"><span class="hs-operator hs-var">&gt;.&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon -&gt; DNameEnv (CoreMapG a) -&gt; Maybe (CoreMapG a)
forall n a. NamedThing n =&gt; n -&gt; DNameEnv a -&gt; Maybe a
</span><a href="GHC.Core.Map.html#lkDNamed"><span class="hs-identifier hs-var">lkDNamed</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680856170"><span class="hs-identifier hs-var">dc</span></a></span><span>
</span><span id="line-393"></span><span>                                        </span><span class="annot"><span class="annottext">(DNameEnv (CoreMapG a) -&gt; Maybe (CoreMapG a))
-&gt; (CoreMapG a -&gt; Maybe a) -&gt; DNameEnv (CoreMapG a) -&gt; Maybe a
forall (m :: * -&gt; *) a b c.
Monad m =&gt;
(a -&gt; m b) -&gt; (b -&gt; m c) -&gt; a -&gt; m c
</span><a href="../../base/src/Control.Monad.html#%3E%3D%3E"><span class="hs-operator hs-var">&gt;=&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Key CoreMapX -&gt; CoreMapG a -&gt; Maybe a
forall (m :: * -&gt; *) a.
(Eq (Key m), TrieMap m) =&gt;
Key m -&gt; GenMap m a -&gt; Maybe a
</span><a href="GHC.Data.TrieMap.html#lkG"><span class="hs-identifier hs-var">lkG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; CoreExpr -&gt; DeBruijn CoreExpr
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; [Id] -&gt; CmEnv
</span><a href="GHC.Core.Map.html#extendCMEs"><span class="hs-identifier hs-var">extendCMEs</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856171"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">[Id]
</span><a href="#local-6989586621680856169"><span class="hs-identifier hs-var">bs</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856168"><span class="hs-identifier hs-var">rhs</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-394"></span><span>
</span><span id="line-395"></span><span id="local-6989586621680857100"><span class="annot"><a href="GHC.Core.Map.html#xtA"><span class="hs-identifier hs-type">xtA</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CmEnv"><span class="hs-identifier hs-type">CmEnv</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.html#CoreAlt"><span class="hs-identifier hs-type">CoreAlt</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Data.TrieMap.html#XT"><span class="hs-identifier hs-type">XT</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857100"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#AltMap"><span class="hs-identifier hs-type">AltMap</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857100"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#AltMap"><span class="hs-identifier hs-type">AltMap</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857100"><span class="hs-identifier hs-type">a</span></a></span></span><span>
</span><span id="line-396"></span><span id="xtA"><span class="annot"><span class="annottext">xtA :: forall a. CmEnv -&gt; CoreAlt -&gt; XT a -&gt; AltMap a -&gt; AltMap a
</span><a href="GHC.Core.Map.html#xtA"><span class="hs-identifier hs-var hs-var">xtA</span></a></span></span><span> </span><span id="local-6989586621680856154"><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856154"><span class="hs-identifier hs-var">env</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">AltCon
</span><a href="GHC.Core.html#DEFAULT"><span class="hs-identifier hs-var">DEFAULT</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[Id]
</span><span class="hs-identifier">_</span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680856153"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856153"><span class="hs-identifier hs-var">rhs</span></a></span></span><span class="hs-special">)</span><span>    </span><span id="local-6989586621680856152"><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680856152"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span id="local-6989586621680856151"><span class="annot"><span class="annottext">AltMap a
</span><a href="#local-6989586621680856151"><span class="hs-identifier hs-var">m</span></a></span></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-397"></span><span>    </span><span class="annot"><span class="annottext">AltMap a
</span><a href="#local-6989586621680856151"><span class="hs-identifier hs-var">m</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">am_deflt :: CoreMapG a
</span><a href="GHC.Core.Map.html#am_deflt"><span class="hs-identifier hs-var">am_deflt</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">AltMap a -&gt; CoreMapG a
forall a. AltMap a -&gt; CoreMapG a
</span><a href="GHC.Core.Map.html#am_deflt"><span class="hs-identifier hs-var hs-var">am_deflt</span></a></span><span> </span><span class="annot"><span class="annottext">AltMap a
</span><a href="#local-6989586621680856151"><span class="hs-identifier hs-var">m</span></a></span><span> </span><span class="annot"><span class="annottext">CoreMapG a -&gt; (CoreMapG a -&gt; CoreMapG a) -&gt; CoreMapG a
forall a b. a -&gt; (a -&gt; b) -&gt; b
</span><a href="GHC.Data.TrieMap.html#%7C%3E"><span class="hs-operator hs-var">|&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Key CoreMapX -&gt; XT a -&gt; CoreMapG a -&gt; CoreMapG a
forall (m :: * -&gt; *) a.
(Eq (Key m), TrieMap m) =&gt;
Key m -&gt; XT a -&gt; GenMap m a -&gt; GenMap m a
</span><a href="GHC.Data.TrieMap.html#xtG"><span class="hs-identifier hs-var">xtG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; CoreExpr -&gt; DeBruijn CoreExpr
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856154"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856153"><span class="hs-identifier hs-var">rhs</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680856152"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-398"></span><span class="annot"><a href="GHC.Core.Map.html#xtA"><span class="hs-identifier hs-var">xtA</span></a></span><span> </span><span id="local-6989586621680856150"><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856150"><span class="hs-identifier hs-var">env</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#LitAlt"><span class="hs-identifier hs-type">LitAlt</span></a></span><span> </span><span id="local-6989586621680856149"><span class="annot"><span class="annottext">Literal
</span><a href="#local-6989586621680856149"><span class="hs-identifier hs-var">l</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[Id]
</span><span class="hs-identifier">_</span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680856148"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856148"><span class="hs-identifier hs-var">rhs</span></a></span></span><span class="hs-special">)</span><span>   </span><span id="local-6989586621680856147"><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680856147"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span id="local-6989586621680856146"><span class="annot"><span class="annottext">AltMap a
</span><a href="#local-6989586621680856146"><span class="hs-identifier hs-var">m</span></a></span></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-399"></span><span>    </span><span class="annot"><span class="annottext">AltMap a
</span><a href="#local-6989586621680856146"><span class="hs-identifier hs-var">m</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">am_lit :: LiteralMap (CoreMapG a)
</span><a href="GHC.Core.Map.html#am_lit"><span class="hs-identifier hs-var">am_lit</span></a></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">AltMap a -&gt; LiteralMap (CoreMapG a)
forall a. AltMap a -&gt; LiteralMap (CoreMapG a)
</span><a href="GHC.Core.Map.html#am_lit"><span class="hs-identifier hs-var hs-var">am_lit</span></a></span><span> </span><span class="annot"><span class="annottext">AltMap a
</span><a href="#local-6989586621680856146"><span class="hs-identifier hs-var">m</span></a></span><span>   </span><span class="annot"><span class="annottext">LiteralMap (CoreMapG a)
-&gt; (LiteralMap (CoreMapG a) -&gt; LiteralMap (CoreMapG a))
-&gt; LiteralMap (CoreMapG a)
forall a b. a -&gt; (a -&gt; b) -&gt; b
</span><a href="GHC.Data.TrieMap.html#%7C%3E"><span class="hs-operator hs-var">|&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Key (Map Literal)
-&gt; XT (CoreMapG a)
-&gt; LiteralMap (CoreMapG a)
-&gt; LiteralMap (CoreMapG a)
forall (m :: * -&gt; *) b. TrieMap m =&gt; Key m -&gt; XT b -&gt; m b -&gt; m b
</span><a href="GHC.Data.TrieMap.html#alterTM"><span class="hs-identifier hs-var">alterTM</span></a></span><span> </span><span class="annot"><span class="annottext">Literal
Key (Map Literal)
</span><a href="#local-6989586621680856149"><span class="hs-identifier hs-var">l</span></a></span><span> </span><span class="annot"><span class="annottext">(XT (CoreMapG a)
 -&gt; LiteralMap (CoreMapG a) -&gt; LiteralMap (CoreMapG a))
-&gt; (CoreMapG a -&gt; CoreMapG a)
-&gt; LiteralMap (CoreMapG a)
-&gt; LiteralMap (CoreMapG a)
forall (m2 :: * -&gt; *) a (m1 :: * -&gt; *).
TrieMap m2 =&gt;
(XT (m2 a) -&gt; m1 (m2 a) -&gt; m1 (m2 a))
-&gt; (m2 a -&gt; m2 a) -&gt; m1 (m2 a) -&gt; m1 (m2 a)
</span><a href="GHC.Data.TrieMap.html#%7C%3E%3E"><span class="hs-operator hs-var">|&gt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Key CoreMapX -&gt; XT a -&gt; CoreMapG a -&gt; CoreMapG a
forall (m :: * -&gt; *) a.
(Eq (Key m), TrieMap m) =&gt;
Key m -&gt; XT a -&gt; GenMap m a -&gt; GenMap m a
</span><a href="GHC.Data.TrieMap.html#xtG"><span class="hs-identifier hs-var">xtG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; CoreExpr -&gt; DeBruijn CoreExpr
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856150"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856148"><span class="hs-identifier hs-var">rhs</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680856147"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-400"></span><span class="annot"><a href="GHC.Core.Map.html#xtA"><span class="hs-identifier hs-var">xtA</span></a></span><span> </span><span id="local-6989586621680856145"><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856145"><span class="hs-identifier hs-var">env</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#DataAlt"><span class="hs-identifier hs-type">DataAlt</span></a></span><span> </span><span id="local-6989586621680856144"><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680856144"><span class="hs-identifier hs-var">d</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680856143"><span class="annot"><span class="annottext">[Id]
</span><a href="#local-6989586621680856143"><span class="hs-identifier hs-var">bs</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680856142"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856142"><span class="hs-identifier hs-var">rhs</span></a></span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621680856141"><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680856141"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span id="local-6989586621680856140"><span class="annot"><span class="annottext">AltMap a
</span><a href="#local-6989586621680856140"><span class="hs-identifier hs-var">m</span></a></span></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-401"></span><span>    </span><span class="annot"><span class="annottext">AltMap a
</span><a href="#local-6989586621680856140"><span class="hs-identifier hs-var">m</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">am_data :: DNameEnv (CoreMapG a)
</span><a href="GHC.Core.Map.html#am_data"><span class="hs-identifier hs-var">am_data</span></a></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">AltMap a -&gt; DNameEnv (CoreMapG a)
forall a. AltMap a -&gt; DNameEnv (CoreMapG a)
</span><a href="GHC.Core.Map.html#am_data"><span class="hs-identifier hs-var hs-var">am_data</span></a></span><span> </span><span class="annot"><span class="annottext">AltMap a
</span><a href="#local-6989586621680856140"><span class="hs-identifier hs-var">m</span></a></span><span>  </span><span class="annot"><span class="annottext">DNameEnv (CoreMapG a)
-&gt; (DNameEnv (CoreMapG a) -&gt; DNameEnv (CoreMapG a))
-&gt; DNameEnv (CoreMapG a)
forall a b. a -&gt; (a -&gt; b) -&gt; b
</span><a href="GHC.Data.TrieMap.html#%7C%3E"><span class="hs-operator hs-var">|&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
-&gt; XT (CoreMapG a)
-&gt; DNameEnv (CoreMapG a)
-&gt; DNameEnv (CoreMapG a)
forall n a. NamedThing n =&gt; n -&gt; XT a -&gt; DNameEnv a -&gt; DNameEnv a
</span><a href="GHC.Core.Map.html#xtDNamed"><span class="hs-identifier hs-var">xtDNamed</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680856144"><span class="hs-identifier hs-var">d</span></a></span><span>
</span><span id="line-402"></span><span>                             </span><span class="annot"><span class="annottext">(XT (CoreMapG a) -&gt; DNameEnv (CoreMapG a) -&gt; DNameEnv (CoreMapG a))
-&gt; (CoreMapG a -&gt; CoreMapG a)
-&gt; DNameEnv (CoreMapG a)
-&gt; DNameEnv (CoreMapG a)
forall (m2 :: * -&gt; *) a (m1 :: * -&gt; *).
TrieMap m2 =&gt;
(XT (m2 a) -&gt; m1 (m2 a) -&gt; m1 (m2 a))
-&gt; (m2 a -&gt; m2 a) -&gt; m1 (m2 a) -&gt; m1 (m2 a)
</span><a href="GHC.Data.TrieMap.html#%7C%3E%3E"><span class="hs-operator hs-var">|&gt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Key CoreMapX -&gt; XT a -&gt; CoreMapG a -&gt; CoreMapG a
forall (m :: * -&gt; *) a.
(Eq (Key m), TrieMap m) =&gt;
Key m -&gt; XT a -&gt; GenMap m a -&gt; GenMap m a
</span><a href="GHC.Data.TrieMap.html#xtG"><span class="hs-identifier hs-var">xtG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; CoreExpr -&gt; DeBruijn CoreExpr
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; [Id] -&gt; CmEnv
</span><a href="GHC.Core.Map.html#extendCMEs"><span class="hs-identifier hs-var">extendCMEs</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856145"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">[Id]
</span><a href="#local-6989586621680856143"><span class="hs-identifier hs-var">bs</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680856142"><span class="hs-identifier hs-var">rhs</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680856141"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-403"></span><span>
</span><span id="line-404"></span><span id="local-6989586621680856138"><span id="local-6989586621680856139"><span class="annot"><a href="GHC.Core.Map.html#fdA"><span class="hs-identifier hs-type">fdA</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621680856139"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680856138"><span class="hs-identifier hs-type">b</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680856138"><span class="hs-identifier hs-type">b</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#AltMap"><span class="hs-identifier hs-type">AltMap</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680856139"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680856138"><span class="hs-identifier hs-type">b</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680856138"><span class="hs-identifier hs-type">b</span></a></span></span></span><span>
</span><span id="line-405"></span><span id="fdA"><span class="annot"><span class="annottext">fdA :: forall a b. (a -&gt; b -&gt; b) -&gt; AltMap a -&gt; b -&gt; b
</span><a href="GHC.Core.Map.html#fdA"><span class="hs-identifier hs-var hs-var">fdA</span></a></span></span><span> </span><span id="local-6989586621680856127"><span class="annot"><span class="annottext">a -&gt; b -&gt; b
</span><a href="#local-6989586621680856127"><span class="hs-identifier hs-var">k</span></a></span></span><span> </span><span id="local-6989586621680856126"><span class="annot"><span class="annottext">AltMap a
</span><a href="#local-6989586621680856126"><span class="hs-identifier hs-var">m</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(a -&gt; b -&gt; b) -&gt; GenMap CoreMapX a -&gt; b -&gt; b
forall (m :: * -&gt; *) a b.
TrieMap m =&gt;
(a -&gt; b -&gt; b) -&gt; m a -&gt; b -&gt; b
</span><a href="GHC.Data.TrieMap.html#foldTM"><span class="hs-identifier hs-var">foldTM</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b -&gt; b
</span><a href="#local-6989586621680856127"><span class="hs-identifier hs-var">k</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">AltMap a -&gt; GenMap CoreMapX a
forall a. AltMap a -&gt; CoreMapG a
</span><a href="GHC.Core.Map.html#am_deflt"><span class="hs-identifier hs-var hs-var">am_deflt</span></a></span><span> </span><span class="annot"><span class="annottext">AltMap a
</span><a href="#local-6989586621680856126"><span class="hs-identifier hs-var">m</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-406"></span><span>        </span><span class="annot"><span class="annottext">(b -&gt; b) -&gt; (b -&gt; b) -&gt; b -&gt; b
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">(GenMap CoreMapX a -&gt; b -&gt; b)
-&gt; UniqDFM Name (GenMap CoreMapX a) -&gt; b -&gt; b
forall (m :: * -&gt; *) a b.
TrieMap m =&gt;
(a -&gt; b -&gt; b) -&gt; m a -&gt; b -&gt; b
</span><a href="GHC.Data.TrieMap.html#foldTM"><span class="hs-identifier hs-var">foldTM</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(a -&gt; b -&gt; b) -&gt; GenMap CoreMapX a -&gt; b -&gt; b
forall (m :: * -&gt; *) a b.
TrieMap m =&gt;
(a -&gt; b -&gt; b) -&gt; m a -&gt; b -&gt; b
</span><a href="GHC.Data.TrieMap.html#foldTM"><span class="hs-identifier hs-var">foldTM</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b -&gt; b
</span><a href="#local-6989586621680856127"><span class="hs-identifier hs-var">k</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">AltMap a -&gt; UniqDFM Name (GenMap CoreMapX a)
forall a. AltMap a -&gt; DNameEnv (CoreMapG a)
</span><a href="GHC.Core.Map.html#am_data"><span class="hs-identifier hs-var hs-var">am_data</span></a></span><span> </span><span class="annot"><span class="annottext">AltMap a
</span><a href="#local-6989586621680856126"><span class="hs-identifier hs-var">m</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-407"></span><span>        </span><span class="annot"><span class="annottext">(b -&gt; b) -&gt; (b -&gt; b) -&gt; b -&gt; b
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">(GenMap CoreMapX a -&gt; b -&gt; b)
-&gt; Map Literal (GenMap CoreMapX a) -&gt; b -&gt; b
forall (m :: * -&gt; *) a b.
TrieMap m =&gt;
(a -&gt; b -&gt; b) -&gt; m a -&gt; b -&gt; b
</span><a href="GHC.Data.TrieMap.html#foldTM"><span class="hs-identifier hs-var">foldTM</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(a -&gt; b -&gt; b) -&gt; GenMap CoreMapX a -&gt; b -&gt; b
forall (m :: * -&gt; *) a b.
TrieMap m =&gt;
(a -&gt; b -&gt; b) -&gt; m a -&gt; b -&gt; b
</span><a href="GHC.Data.TrieMap.html#foldTM"><span class="hs-identifier hs-var">foldTM</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b -&gt; b
</span><a href="#local-6989586621680856127"><span class="hs-identifier hs-var">k</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">AltMap a -&gt; Map Literal (GenMap CoreMapX a)
forall a. AltMap a -&gt; LiteralMap (CoreMapG a)
</span><a href="GHC.Core.Map.html#am_lit"><span class="hs-identifier hs-var hs-var">am_lit</span></a></span><span> </span><span class="annot"><span class="annottext">AltMap a
</span><a href="#local-6989586621680856126"><span class="hs-identifier hs-var">m</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-408"></span><span>
</span><span id="line-409"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
                   Coercions
*                                                                      *
************************************************************************
-}</span><span>
</span><span id="line-416"></span><span>
</span><span id="line-417"></span><span class="hs-comment">-- We should really never care about the contents of a coercion. Instead,</span><span>
</span><span id="line-418"></span><span class="hs-comment">-- just look up the coercion's type.</span><span>
</span><span id="line-419"></span><span class="hs-keyword">newtype</span><span> </span><span id="CoercionMap"><span class="annot"><a href="GHC.Core.Map.html#CoercionMap"><span class="hs-identifier hs-var">CoercionMap</span></a></span></span><span> </span><span id="local-6989586621680857072"><span class="annot"><a href="#local-6989586621680857072"><span class="hs-identifier hs-type">a</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="CoercionMap"><span class="annot"><a href="GHC.Core.Map.html#CoercionMap"><span class="hs-identifier hs-var">CoercionMap</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#CoercionMapG"><span class="hs-identifier hs-type">CoercionMapG</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857072"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-420"></span><span>
</span><span id="line-421"></span><span class="hs-keyword">instance</span><span> </span><span class="annot"><a href="GHC.Data.TrieMap.html#TrieMap"><span class="hs-identifier hs-type">TrieMap</span></a></span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CoercionMap"><span class="hs-identifier hs-type">CoercionMap</span></a></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-422"></span><span>   </span><span class="hs-keyword">type</span><span> </span><span id="Key"><span class="annot"><a href="GHC.Data.TrieMap.html#Key"><span class="hs-identifier hs-var">Key</span></a></span></span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CoercionMap"><span class="hs-identifier hs-type">CoercionMap</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Coercion"><span class="hs-identifier hs-type">Coercion</span></a></span><span>
</span><span id="line-423"></span><span>   </span><span id="local-6989586621680856114"><span class="annot"><span class="annottext">emptyTM :: forall a. CoercionMap a
</span><a href="#local-6989586621680856114"><span class="hs-identifier hs-var hs-var hs-var hs-var">emptyTM</span></a></span></span><span>                     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoercionMapG a -&gt; CoercionMap a
forall a. CoercionMapG a -&gt; CoercionMap a
</span><a href="GHC.Core.Map.html#CoercionMap"><span class="hs-identifier hs-var">CoercionMap</span></a></span><span> </span><span class="annot"><span class="annottext">CoercionMapG a
forall (m :: * -&gt; *) a. TrieMap m =&gt; m a
</span><a href="GHC.Data.TrieMap.html#emptyTM"><span class="hs-identifier hs-var">emptyTM</span></a></span><span>
</span><span id="line-424"></span><span>   </span><span id="local-6989586621680856109"><span class="annot"><span class="annottext">lookupTM :: forall b. Key CoercionMap -&gt; CoercionMap b -&gt; Maybe b
</span><a href="#local-6989586621680856109"><span class="hs-identifier hs-var hs-var hs-var hs-var">lookupTM</span></a></span></span><span> </span><span id="local-6989586621680856108"><span class="annot"><span class="annottext">Key CoercionMap
</span><a href="#local-6989586621680856108"><span class="hs-identifier hs-var">k</span></a></span></span><span>  </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#CoercionMap"><span class="hs-identifier hs-type">CoercionMap</span></a></span><span> </span><span id="local-6989586621680856107"><span class="annot"><span class="annottext">CoercionMapG b
</span><a href="#local-6989586621680856107"><span class="hs-identifier hs-var">m</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Key (GenMap CoercionMapX) -&gt; CoercionMapG b -&gt; Maybe b
forall (m :: * -&gt; *) b. TrieMap m =&gt; Key m -&gt; m b -&gt; Maybe b
</span><a href="GHC.Data.TrieMap.html#lookupTM"><span class="hs-identifier hs-var">lookupTM</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Coercion -&gt; DeBruijn Coercion
forall a. a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#deBruijnize"><span class="hs-identifier hs-var">deBruijnize</span></a></span><span> </span><span class="annot"><span class="annottext">Coercion
Key CoercionMap
</span><a href="#local-6989586621680856108"><span class="hs-identifier hs-var">k</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">CoercionMapG b
</span><a href="#local-6989586621680856107"><span class="hs-identifier hs-var">m</span></a></span><span>
</span><span id="line-425"></span><span>   </span><span id="local-6989586621680856102"><span class="annot"><span class="annottext">alterTM :: forall b. Key CoercionMap -&gt; XT b -&gt; CoercionMap b -&gt; CoercionMap b
</span><a href="#local-6989586621680856102"><span class="hs-identifier hs-var hs-var hs-var hs-var">alterTM</span></a></span></span><span> </span><span id="local-6989586621680856101"><span class="annot"><span class="annottext">Key CoercionMap
</span><a href="#local-6989586621680856101"><span class="hs-identifier hs-var">k</span></a></span></span><span> </span><span id="local-6989586621680856100"><span class="annot"><span class="annottext">XT b
</span><a href="#local-6989586621680856100"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#CoercionMap"><span class="hs-identifier hs-type">CoercionMap</span></a></span><span> </span><span id="local-6989586621680856099"><span class="annot"><span class="annottext">CoercionMapG b
</span><a href="#local-6989586621680856099"><span class="hs-identifier hs-var">m</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoercionMapG b -&gt; CoercionMap b
forall a. CoercionMapG a -&gt; CoercionMap a
</span><a href="GHC.Core.Map.html#CoercionMap"><span class="hs-identifier hs-var">CoercionMap</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Key (GenMap CoercionMapX)
-&gt; XT b -&gt; CoercionMapG b -&gt; CoercionMapG b
forall (m :: * -&gt; *) b. TrieMap m =&gt; Key m -&gt; XT b -&gt; m b -&gt; m b
</span><a href="GHC.Data.TrieMap.html#alterTM"><span class="hs-identifier hs-var">alterTM</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Coercion -&gt; DeBruijn Coercion
forall a. a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#deBruijnize"><span class="hs-identifier hs-var">deBruijnize</span></a></span><span> </span><span class="annot"><span class="annottext">Coercion
Key CoercionMap
</span><a href="#local-6989586621680856101"><span class="hs-identifier hs-var">k</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">XT b
</span><a href="#local-6989586621680856100"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">CoercionMapG b
</span><a href="#local-6989586621680856099"><span class="hs-identifier hs-var">m</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-426"></span><span>   </span><span id="local-6989586621680856094"><span class="annot"><span class="annottext">foldTM :: forall a b. (a -&gt; b -&gt; b) -&gt; CoercionMap a -&gt; b -&gt; b
</span><a href="#local-6989586621680856094"><span class="hs-identifier hs-var hs-var hs-var hs-var">foldTM</span></a></span></span><span> </span><span id="local-6989586621680856093"><span class="annot"><span class="annottext">a -&gt; b -&gt; b
</span><a href="#local-6989586621680856093"><span class="hs-identifier hs-var">k</span></a></span></span><span>    </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#CoercionMap"><span class="hs-identifier hs-type">CoercionMap</span></a></span><span> </span><span id="local-6989586621680856092"><span class="annot"><span class="annottext">CoercionMapG a
</span><a href="#local-6989586621680856092"><span class="hs-identifier hs-var">m</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(a -&gt; b -&gt; b) -&gt; CoercionMapG a -&gt; b -&gt; b
forall (m :: * -&gt; *) a b.
TrieMap m =&gt;
(a -&gt; b -&gt; b) -&gt; m a -&gt; b -&gt; b
</span><a href="GHC.Data.TrieMap.html#foldTM"><span class="hs-identifier hs-var">foldTM</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b -&gt; b
</span><a href="#local-6989586621680856093"><span class="hs-identifier hs-var">k</span></a></span><span> </span><span class="annot"><span class="annottext">CoercionMapG a
</span><a href="#local-6989586621680856092"><span class="hs-identifier hs-var">m</span></a></span><span>
</span><span id="line-427"></span><span>   </span><span id="local-6989586621680856087"><span class="annot"><span class="annottext">mapTM :: forall a b. (a -&gt; b) -&gt; CoercionMap a -&gt; CoercionMap b
</span><a href="#local-6989586621680856087"><span class="hs-identifier hs-var hs-var hs-var hs-var">mapTM</span></a></span></span><span> </span><span id="local-6989586621680856086"><span class="annot"><span class="annottext">a -&gt; b
</span><a href="#local-6989586621680856086"><span class="hs-identifier hs-var">f</span></a></span></span><span>     </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#CoercionMap"><span class="hs-identifier hs-type">CoercionMap</span></a></span><span> </span><span id="local-6989586621680856085"><span class="annot"><span class="annottext">CoercionMapG a
</span><a href="#local-6989586621680856085"><span class="hs-identifier hs-var">m</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoercionMapG b -&gt; CoercionMap b
forall a. CoercionMapG a -&gt; CoercionMap a
</span><a href="GHC.Core.Map.html#CoercionMap"><span class="hs-identifier hs-var">CoercionMap</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(a -&gt; b) -&gt; CoercionMapG a -&gt; CoercionMapG b
forall (m :: * -&gt; *) a b. TrieMap m =&gt; (a -&gt; b) -&gt; m a -&gt; m b
</span><a href="GHC.Data.TrieMap.html#mapTM"><span class="hs-identifier hs-var">mapTM</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b
</span><a href="#local-6989586621680856086"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">CoercionMapG a
</span><a href="#local-6989586621680856085"><span class="hs-identifier hs-var">m</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-428"></span><span>
</span><span id="line-429"></span><span class="hs-keyword">type</span><span> </span><span id="CoercionMapG"><span class="annot"><a href="GHC.Core.Map.html#CoercionMapG"><span class="hs-identifier hs-var">CoercionMapG</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Data.TrieMap.html#GenMap"><span class="hs-identifier hs-type">GenMap</span></a></span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CoercionMapX"><span class="hs-identifier hs-type">CoercionMapX</span></a></span><span>
</span><span id="line-430"></span><span class="hs-keyword">newtype</span><span> </span><span id="CoercionMapX"><span class="annot"><a href="GHC.Core.Map.html#CoercionMapX"><span class="hs-identifier hs-var">CoercionMapX</span></a></span></span><span> </span><span id="local-6989586621680857064"><span class="annot"><a href="#local-6989586621680857064"><span class="hs-identifier hs-type">a</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="CoercionMapX"><span class="annot"><a href="GHC.Core.Map.html#CoercionMapX"><span class="hs-identifier hs-var">CoercionMapX</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#TypeMapX"><span class="hs-identifier hs-type">TypeMapX</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857064"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-431"></span><span>
</span><span id="line-432"></span><span class="hs-keyword">instance</span><span> </span><span class="annot"><a href="GHC.Data.TrieMap.html#TrieMap"><span class="hs-identifier hs-type">TrieMap</span></a></span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CoercionMapX"><span class="hs-identifier hs-type">CoercionMapX</span></a></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-433"></span><span>  </span><span class="hs-keyword">type</span><span> </span><span id="Key"><span class="annot"><a href="GHC.Data.TrieMap.html#Key"><span class="hs-identifier hs-var">Key</span></a></span></span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CoercionMapX"><span class="hs-identifier hs-type">CoercionMapX</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#DeBruijn"><span class="hs-identifier hs-type">DeBruijn</span></a></span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Coercion"><span class="hs-identifier hs-type">Coercion</span></a></span><span>
</span><span id="line-434"></span><span>  </span><span id="local-6989586621680856077"><span class="annot"><span class="annottext">emptyTM :: forall a. CoercionMapX a
</span><a href="#local-6989586621680856077"><span class="hs-identifier hs-var hs-var hs-var hs-var">emptyTM</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeMapX a -&gt; CoercionMapX a
forall a. TypeMapX a -&gt; CoercionMapX a
</span><a href="GHC.Core.Map.html#CoercionMapX"><span class="hs-identifier hs-var">CoercionMapX</span></a></span><span> </span><span class="annot"><span class="annottext">TypeMapX a
forall (m :: * -&gt; *) a. TrieMap m =&gt; m a
</span><a href="GHC.Data.TrieMap.html#emptyTM"><span class="hs-identifier hs-var">emptyTM</span></a></span><span>
</span><span id="line-435"></span><span>  </span><span id="local-6989586621680856076"><span class="annot"><span class="annottext">lookupTM :: forall b. Key CoercionMapX -&gt; CoercionMapX b -&gt; Maybe b
</span><a href="#local-6989586621680856076"><span class="hs-identifier hs-var hs-var hs-var hs-var">lookupTM</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Key CoercionMapX -&gt; CoercionMapX b -&gt; Maybe b
forall a. DeBruijn Coercion -&gt; CoercionMapX a -&gt; Maybe a
</span><a href="GHC.Core.Map.html#lkC"><span class="hs-identifier hs-var">lkC</span></a></span><span>
</span><span id="line-436"></span><span>  </span><span id="local-6989586621680856074"><span class="annot"><span class="annottext">alterTM :: forall b.
Key CoercionMapX -&gt; XT b -&gt; CoercionMapX b -&gt; CoercionMapX b
</span><a href="#local-6989586621680856074"><span class="hs-identifier hs-var hs-var hs-var hs-var">alterTM</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Key CoercionMapX
-&gt; (Maybe b -&gt; Maybe b) -&gt; CoercionMapX b -&gt; CoercionMapX b
forall a.
DeBruijn Coercion -&gt; XT a -&gt; CoercionMapX a -&gt; CoercionMapX a
</span><a href="GHC.Core.Map.html#xtC"><span class="hs-identifier hs-var">xtC</span></a></span><span>
</span><span id="line-437"></span><span>  </span><span id="local-6989586621680856071"><span class="annot"><span class="annottext">foldTM :: forall a b. (a -&gt; b -&gt; b) -&gt; CoercionMapX a -&gt; b -&gt; b
</span><a href="#local-6989586621680856071"><span class="hs-identifier hs-var hs-var hs-var hs-var">foldTM</span></a></span></span><span> </span><span id="local-6989586621680856070"><span class="annot"><span class="annottext">a -&gt; b -&gt; b
</span><a href="#local-6989586621680856070"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#CoercionMapX"><span class="hs-identifier hs-type">CoercionMapX</span></a></span><span> </span><span id="local-6989586621680856069"><span class="annot"><span class="annottext">TypeMapX a
</span><a href="#local-6989586621680856069"><span class="hs-identifier hs-var">core_tm</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(a -&gt; b -&gt; b) -&gt; TypeMapX a -&gt; b -&gt; b
forall (m :: * -&gt; *) a b.
TrieMap m =&gt;
(a -&gt; b -&gt; b) -&gt; m a -&gt; b -&gt; b
</span><a href="GHC.Data.TrieMap.html#foldTM"><span class="hs-identifier hs-var">foldTM</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b -&gt; b
</span><a href="#local-6989586621680856070"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">TypeMapX a
</span><a href="#local-6989586621680856069"><span class="hs-identifier hs-var">core_tm</span></a></span><span>
</span><span id="line-438"></span><span>  </span><span id="local-6989586621680856067"><span class="annot"><span class="annottext">mapTM :: forall a b. (a -&gt; b) -&gt; CoercionMapX a -&gt; CoercionMapX b
</span><a href="#local-6989586621680856067"><span class="hs-identifier hs-var hs-var hs-var hs-var">mapTM</span></a></span></span><span> </span><span id="local-6989586621680856066"><span class="annot"><span class="annottext">a -&gt; b
</span><a href="#local-6989586621680856066"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#CoercionMapX"><span class="hs-identifier hs-type">CoercionMapX</span></a></span><span> </span><span id="local-6989586621680856065"><span class="annot"><span class="annottext">TypeMapX a
</span><a href="#local-6989586621680856065"><span class="hs-identifier hs-var">core_tm</span></a></span></span><span class="hs-special">)</span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeMapX b -&gt; CoercionMapX b
forall a. TypeMapX a -&gt; CoercionMapX a
</span><a href="GHC.Core.Map.html#CoercionMapX"><span class="hs-identifier hs-var">CoercionMapX</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(a -&gt; b) -&gt; TypeMapX a -&gt; TypeMapX b
forall (m :: * -&gt; *) a b. TrieMap m =&gt; (a -&gt; b) -&gt; m a -&gt; m b
</span><a href="GHC.Data.TrieMap.html#mapTM"><span class="hs-identifier hs-var">mapTM</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b
</span><a href="#local-6989586621680856066"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">TypeMapX a
</span><a href="#local-6989586621680856065"><span class="hs-identifier hs-var">core_tm</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-439"></span><span>
</span><span id="line-440"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621680856062"><span class="annot"><span class="hs-identifier hs-type">Eq</span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#DeBruijn"><span class="hs-identifier hs-type">DeBruijn</span></a></span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Coercion"><span class="hs-identifier hs-type">Coercion</span></a></span><span class="hs-special">)</span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-441"></span><span>  </span><span class="annot"><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-type">D</span></a></span><span> </span><span id="local-6989586621680856060"><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856060"><span class="hs-identifier hs-var">env1</span></a></span></span><span> </span><span id="local-6989586621680856059"><span class="annot"><span class="annottext">Coercion
</span><a href="#local-6989586621680856059"><span class="hs-identifier hs-var">co1</span></a></span></span><span> </span><span id="local-6989586621680856058"><span class="annot"><span class="annottext">== :: DeBruijn Coercion -&gt; DeBruijn Coercion -&gt; Bool
</span><span class="hs-operator hs-var hs-var hs-var hs-var">==</span></span></span><span> </span><span class="annot"><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-type">D</span></a></span><span> </span><span id="local-6989586621680856057"><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856057"><span class="hs-identifier hs-var">env2</span></a></span></span><span> </span><span id="local-6989586621680856056"><span class="annot"><span class="annottext">Coercion
</span><a href="#local-6989586621680856056"><span class="hs-identifier hs-var">co2</span></a></span></span><span>
</span><span id="line-442"></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; Type -&gt; DeBruijn Type
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856060"><span class="hs-identifier hs-var">env1</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Coercion -&gt; Type
</span><a href="GHC.Core.Coercion.html#coercionType"><span class="hs-identifier hs-var">coercionType</span></a></span><span> </span><span class="annot"><span class="annottext">Coercion
</span><a href="#local-6989586621680856059"><span class="hs-identifier hs-var">co1</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">DeBruijn Type -&gt; DeBruijn Type -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span>
</span><span id="line-443"></span><span>      </span><span class="annot"><span class="annottext">CmEnv -&gt; Type -&gt; DeBruijn Type
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856057"><span class="hs-identifier hs-var">env2</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Coercion -&gt; Type
</span><a href="GHC.Core.Coercion.html#coercionType"><span class="hs-identifier hs-var">coercionType</span></a></span><span> </span><span class="annot"><span class="annottext">Coercion
</span><a href="#local-6989586621680856056"><span class="hs-identifier hs-var">co2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-444"></span><span>
</span><span id="line-445"></span><span id="local-6989586621680857062"><span class="annot"><a href="GHC.Core.Map.html#lkC"><span class="hs-identifier hs-type">lkC</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#DeBruijn"><span class="hs-identifier hs-type">DeBruijn</span></a></span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Coercion"><span class="hs-identifier hs-type">Coercion</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CoercionMapX"><span class="hs-identifier hs-type">CoercionMapX</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857062"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857062"><span class="hs-identifier hs-type">a</span></a></span></span><span>
</span><span id="line-446"></span><span id="lkC"><span class="annot"><span class="annottext">lkC :: forall a. DeBruijn Coercion -&gt; CoercionMapX a -&gt; Maybe a
</span><a href="GHC.Core.Map.html#lkC"><span class="hs-identifier hs-var hs-var">lkC</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-type">D</span></a></span><span> </span><span id="local-6989586621680856054"><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856054"><span class="hs-identifier hs-var">env</span></a></span></span><span> </span><span id="local-6989586621680856053"><span class="annot"><span class="annottext">Coercion
</span><a href="#local-6989586621680856053"><span class="hs-identifier hs-var">co</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#CoercionMapX"><span class="hs-identifier hs-type">CoercionMapX</span></a></span><span> </span><span id="local-6989586621680856052"><span class="annot"><span class="annottext">TypeMapX a
</span><a href="#local-6989586621680856052"><span class="hs-identifier hs-var">core_tm</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DeBruijn Type -&gt; TypeMapX a -&gt; Maybe a
forall a. DeBruijn Type -&gt; TypeMapX a -&gt; Maybe a
</span><a href="GHC.Core.Map.html#lkT"><span class="hs-identifier hs-var">lkT</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; Type -&gt; DeBruijn Type
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856054"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">(Type -&gt; DeBruijn Type) -&gt; Type -&gt; DeBruijn Type
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">Coercion -&gt; Type
</span><a href="GHC.Core.Coercion.html#coercionType"><span class="hs-identifier hs-var">coercionType</span></a></span><span> </span><span class="annot"><span class="annottext">Coercion
</span><a href="#local-6989586621680856053"><span class="hs-identifier hs-var">co</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-447"></span><span>                                        </span><span class="annot"><span class="annottext">TypeMapX a
</span><a href="#local-6989586621680856052"><span class="hs-identifier hs-var">core_tm</span></a></span><span>
</span><span id="line-448"></span><span>
</span><span id="line-449"></span><span id="local-6989586621680857060"><span class="annot"><a href="GHC.Core.Map.html#xtC"><span class="hs-identifier hs-type">xtC</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#DeBruijn"><span class="hs-identifier hs-type">DeBruijn</span></a></span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Coercion"><span class="hs-identifier hs-type">Coercion</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Data.TrieMap.html#XT"><span class="hs-identifier hs-type">XT</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857060"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CoercionMapX"><span class="hs-identifier hs-type">CoercionMapX</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857060"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CoercionMapX"><span class="hs-identifier hs-type">CoercionMapX</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857060"><span class="hs-identifier hs-type">a</span></a></span></span><span>
</span><span id="line-450"></span><span id="xtC"><span class="annot"><span class="annottext">xtC :: forall a.
DeBruijn Coercion -&gt; XT a -&gt; CoercionMapX a -&gt; CoercionMapX a
</span><a href="GHC.Core.Map.html#xtC"><span class="hs-identifier hs-var hs-var">xtC</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-type">D</span></a></span><span> </span><span id="local-6989586621680856050"><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856050"><span class="hs-identifier hs-var">env</span></a></span></span><span> </span><span id="local-6989586621680856049"><span class="annot"><span class="annottext">Coercion
</span><a href="#local-6989586621680856049"><span class="hs-identifier hs-var">co</span></a></span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621680856048"><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680856048"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#CoercionMapX"><span class="hs-identifier hs-type">CoercionMapX</span></a></span><span> </span><span id="local-6989586621680856047"><span class="annot"><span class="annottext">TypeMapX a
</span><a href="#local-6989586621680856047"><span class="hs-identifier hs-var">m</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-451"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeMapX a -&gt; CoercionMapX a
forall a. TypeMapX a -&gt; CoercionMapX a
</span><a href="GHC.Core.Map.html#CoercionMapX"><span class="hs-identifier hs-var">CoercionMapX</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DeBruijn Type -&gt; XT a -&gt; TypeMapX a -&gt; TypeMapX a
forall a. DeBruijn Type -&gt; XT a -&gt; TypeMapX a -&gt; TypeMapX a
</span><a href="GHC.Core.Map.html#xtT"><span class="hs-identifier hs-var">xtT</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; Type -&gt; DeBruijn Type
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680856050"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">(Type -&gt; DeBruijn Type) -&gt; Type -&gt; DeBruijn Type
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">Coercion -&gt; Type
</span><a href="GHC.Core.Coercion.html#coercionType"><span class="hs-identifier hs-var">coercionType</span></a></span><span> </span><span class="annot"><span class="annottext">Coercion
</span><a href="#local-6989586621680856049"><span class="hs-identifier hs-var">co</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680856048"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">TypeMapX a
</span><a href="#local-6989586621680856047"><span class="hs-identifier hs-var">m</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-452"></span><span>
</span><span id="line-453"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
                   Types
*                                                                      *
************************************************************************
-}</span><span>
</span><span id="line-460"></span><span>
</span><span id="line-461"></span><span class="hs-comment">-- | @TypeMapG a@ is a map from @DeBruijn Type@ to @a@.  The extended</span><span>
</span><span id="line-462"></span><span class="hs-comment">-- key makes it suitable for recursive traversal, since it can track binders,</span><span>
</span><span id="line-463"></span><span class="hs-comment">-- but it is strictly internal to this module.  If you are including a 'TypeMap'</span><span>
</span><span id="line-464"></span><span class="hs-comment">-- inside another 'TrieMap', this is the type you want. Note that this</span><span>
</span><span id="line-465"></span><span class="hs-comment">-- lookup does not do a kind-check. Thus, all keys in this map must have</span><span>
</span><span id="line-466"></span><span class="hs-comment">-- the same kind. Also note that this map respects the distinction between</span><span>
</span><span id="line-467"></span><span class="hs-comment">-- @Type@ and @Constraint@, despite the fact that they are equivalent type</span><span>
</span><span id="line-468"></span><span class="hs-comment">-- synonyms in Core.</span><span>
</span><span id="line-469"></span><span class="hs-keyword">type</span><span> </span><span id="TypeMapG"><span class="annot"><a href="GHC.Core.Map.html#TypeMapG"><span class="hs-identifier hs-var">TypeMapG</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Data.TrieMap.html#GenMap"><span class="hs-identifier hs-type">GenMap</span></a></span><span> </span><span class="annot"><a href="GHC.Core.Map.html#TypeMapX"><span class="hs-identifier hs-type">TypeMapX</span></a></span><span>
</span><span id="line-470"></span><span>
</span><span id="line-471"></span><span class="hs-comment">-- | @TypeMapX a@ is the base map from @DeBruijn Type@ to @a@, but without the</span><span>
</span><span id="line-472"></span><span class="hs-comment">-- 'GenMap' optimization.</span><span>
</span><span id="line-473"></span><span class="hs-keyword">data</span><span> </span><span id="TypeMapX"><span class="annot"><a href="GHC.Core.Map.html#TypeMapX"><span class="hs-identifier hs-var">TypeMapX</span></a></span></span><span> </span><span id="local-6989586621680857048"><span class="annot"><a href="#local-6989586621680857048"><span class="hs-identifier hs-type">a</span></a></span></span><span>
</span><span id="line-474"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span id="TM"><span class="annot"><a href="GHC.Core.Map.html#TM"><span class="hs-identifier hs-var">TM</span></a></span></span><span> </span><span class="hs-special">{</span><span> </span><span id="tm_var"><span class="annot"><span class="annottext">forall a. TypeMapX a -&gt; VarMap a
</span><a href="GHC.Core.Map.html#tm_var"><span class="hs-identifier hs-var hs-var">tm_var</span></a></span></span><span>    </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#VarMap"><span class="hs-identifier hs-type">VarMap</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857048"><span class="hs-identifier hs-type">a</span></a></span><span>
</span><span id="line-475"></span><span>       </span><span class="hs-special">,</span><span> </span><span id="tm_app"><span class="annot"><span class="annottext">forall a. TypeMapX a -&gt; TypeMapG (TypeMapG a)
</span><a href="GHC.Core.Map.html#tm_app"><span class="hs-identifier hs-var hs-var">tm_app</span></a></span></span><span>    </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#TypeMapG"><span class="hs-identifier hs-type">TypeMapG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#TypeMapG"><span class="hs-identifier hs-type">TypeMapG</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857048"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-476"></span><span>       </span><span class="hs-special">,</span><span> </span><span id="tm_tycon"><span class="annot"><span class="annottext">forall a. TypeMapX a -&gt; DNameEnv a
</span><a href="GHC.Core.Map.html#tm_tycon"><span class="hs-identifier hs-var hs-var">tm_tycon</span></a></span></span><span>  </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.Env.html#DNameEnv"><span class="hs-identifier hs-type">DNameEnv</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857048"><span class="hs-identifier hs-type">a</span></a></span><span>
</span><span id="line-477"></span><span>       </span><span class="hs-special">,</span><span> </span><span id="tm_forall"><span class="annot"><span class="annottext">forall a. TypeMapX a -&gt; TypeMapG (BndrMap a)
</span><a href="GHC.Core.Map.html#tm_forall"><span class="hs-identifier hs-var hs-var">tm_forall</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#TypeMapG"><span class="hs-identifier hs-type">TypeMapG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#BndrMap"><span class="hs-identifier hs-type">BndrMap</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857048"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-comment">-- See Note [Binders]</span><span>
</span><span id="line-478"></span><span>       </span><span class="hs-special">,</span><span> </span><span id="tm_tylit"><span class="annot"><span class="annottext">forall a. TypeMapX a -&gt; TyLitMap a
</span><a href="GHC.Core.Map.html#tm_tylit"><span class="hs-identifier hs-var hs-var">tm_tylit</span></a></span></span><span>  </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#TyLitMap"><span class="hs-identifier hs-type">TyLitMap</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857048"><span class="hs-identifier hs-type">a</span></a></span><span>
</span><span id="line-479"></span><span>       </span><span class="hs-special">,</span><span> </span><span id="tm_coerce"><span class="annot"><span class="annottext">forall a. TypeMapX a -&gt; Maybe a
</span><a href="GHC.Core.Map.html#tm_coerce"><span class="hs-identifier hs-var hs-var">tm_coerce</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857048"><span class="hs-identifier hs-type">a</span></a></span><span>
</span><span id="line-480"></span><span>       </span><span class="hs-special">}</span><span>
</span><span id="line-481"></span><span>    </span><span class="hs-comment">-- Note that there is no tyconapp case; see Note [Equality on AppTys] in GHC.Core.Type</span><span>
</span><span id="line-482"></span><span>
</span><span id="line-483"></span><span class="hs-comment">-- | Squeeze out any synonyms, and change TyConApps to nested AppTys. Why the</span><span>
</span><span id="line-484"></span><span class="hs-comment">-- last one? See Note [Equality on AppTys] in &quot;GHC.Core.Type&quot;</span><span>
</span><span id="line-485"></span><span class="hs-comment">--</span><span>
</span><span id="line-486"></span><span class="hs-comment">-- Note, however, that we keep Constraint and Type apart here, despite the fact</span><span>
</span><span id="line-487"></span><span class="hs-comment">-- that they are both synonyms of TYPE 'LiftedRep (see #11715).</span><span>
</span><span id="line-488"></span><span class="annot"><a href="GHC.Core.Map.html#trieMapView"><span class="hs-identifier hs-type">trieMapView</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-489"></span><span id="trieMapView"><span class="annot"><span class="annottext">trieMapView :: Type -&gt; Maybe Type
</span><a href="GHC.Core.Map.html#trieMapView"><span class="hs-identifier hs-var hs-var">trieMapView</span></a></span></span><span> </span><span id="local-6989586621680856037"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680856037"><span class="hs-identifier hs-var">ty</span></a></span></span><span>
</span><span id="line-490"></span><span>  </span><span class="hs-comment">-- First check for TyConApps that need to be expanded to</span><span>
</span><span id="line-491"></span><span>  </span><span class="hs-comment">-- AppTy chains.</span><span>
</span><span id="line-492"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span class="hs-special">(</span><span id="local-6989586621680856036"><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680856036"><span class="hs-identifier hs-var">tc</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680856035"><span class="annot"><span class="annottext">tys :: [Type]
</span><a href="#local-6989586621680856035"><span class="hs-identifier hs-var">tys</span></a></span></span><span class="hs-glyph">@</span><span class="hs-special">(</span><span class="annot"><span class="annottext">Type
</span><span class="hs-identifier">_</span></span><span class="annot"><span class="hs-glyph hs-type">:</span></span><span class="annot"><span class="annottext">[Type]
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">HasCallStack =&gt; Type -&gt; Maybe (TyCon, [Type])
Type -&gt; Maybe (TyCon, [Type])
</span><a href="GHC.Core.Type.html#tcSplitTyConApp_maybe"><span class="hs-identifier hs-var">tcSplitTyConApp_maybe</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680856037"><span class="hs-identifier hs-var">ty</span></a></span><span>
</span><span id="line-493"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Type -&gt; Maybe Type
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="annot"><span class="annottext">(Type -&gt; Maybe Type) -&gt; Type -&gt; Maybe Type
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">(Type -&gt; Type -&gt; Type) -&gt; Type -&gt; [Type] -&gt; Type
forall (t :: * -&gt; *) b a.
Foldable t =&gt;
(b -&gt; a -&gt; b) -&gt; b -&gt; t a -&gt; b
</span><a href="../../base/src/Data.Foldable.html#foldl%27"><span class="hs-identifier hs-var">foldl'</span></a></span><span> </span><span class="annot"><span class="annottext">Type -&gt; Type -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#AppTy"><span class="hs-identifier hs-var">AppTy</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TyCon -&gt; [Type] -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#TyConApp"><span class="hs-identifier hs-var">TyConApp</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680856036"><span class="hs-identifier hs-var">tc</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680856035"><span class="hs-identifier hs-var">tys</span></a></span><span>
</span><span id="line-494"></span><span>
</span><span id="line-495"></span><span>  </span><span class="hs-comment">-- Then resolve any remaining nullary synonyms.</span><span>
</span><span id="line-496"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span id="local-6989586621680856030"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680856030"><span class="hs-identifier hs-var">ty'</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">Type -&gt; Maybe Type
</span><a href="GHC.Core.Type.html#tcView"><span class="hs-identifier hs-var">tcView</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680856037"><span class="hs-identifier hs-var">ty</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Type -&gt; Maybe Type
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680856030"><span class="hs-identifier hs-var">ty'</span></a></span><span>
</span><span id="line-497"></span><span class="annot"><a href="GHC.Core.Map.html#trieMapView"><span class="hs-identifier hs-var">trieMapView</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Maybe Type
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span>
</span><span id="line-498"></span><span>
</span><span id="line-499"></span><span class="hs-keyword">instance</span><span> </span><span class="annot"><a href="GHC.Data.TrieMap.html#TrieMap"><span class="hs-identifier hs-type">TrieMap</span></a></span><span> </span><span class="annot"><a href="GHC.Core.Map.html#TypeMapX"><span class="hs-identifier hs-type">TypeMapX</span></a></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-500"></span><span>   </span><span class="hs-keyword">type</span><span> </span><span id="Key"><span class="annot"><a href="GHC.Data.TrieMap.html#Key"><span class="hs-identifier hs-var">Key</span></a></span></span><span> </span><span class="annot"><a href="GHC.Core.Map.html#TypeMapX"><span class="hs-identifier hs-type">TypeMapX</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#DeBruijn"><span class="hs-identifier hs-type">DeBruijn</span></a></span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-501"></span><span>   </span><span id="local-6989586621680856023"><span class="annot"><span class="annottext">emptyTM :: forall a. TypeMapX a
</span><a href="#local-6989586621680856023"><span class="hs-identifier hs-var hs-var hs-var hs-var">emptyTM</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeMapX a
forall a. TypeMapX a
</span><a href="GHC.Core.Map.html#emptyT"><span class="hs-identifier hs-var">emptyT</span></a></span><span>
</span><span id="line-502"></span><span>   </span><span id="local-6989586621680856021"><span class="annot"><span class="annottext">lookupTM :: forall b. Key TypeMapX -&gt; TypeMapX b -&gt; Maybe b
</span><a href="#local-6989586621680856021"><span class="hs-identifier hs-var hs-var hs-var hs-var">lookupTM</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Key TypeMapX -&gt; TypeMapX b -&gt; Maybe b
forall a. DeBruijn Type -&gt; TypeMapX a -&gt; Maybe a
</span><a href="GHC.Core.Map.html#lkT"><span class="hs-identifier hs-var">lkT</span></a></span><span>
</span><span id="line-503"></span><span>   </span><span id="local-6989586621680856020"><span class="annot"><span class="annottext">alterTM :: forall b. Key TypeMapX -&gt; XT b -&gt; TypeMapX b -&gt; TypeMapX b
</span><a href="#local-6989586621680856020"><span class="hs-identifier hs-var hs-var hs-var hs-var">alterTM</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Key TypeMapX -&gt; (Maybe b -&gt; Maybe b) -&gt; TypeMapX b -&gt; TypeMapX b
forall a. DeBruijn Type -&gt; XT a -&gt; TypeMapX a -&gt; TypeMapX a
</span><a href="GHC.Core.Map.html#xtT"><span class="hs-identifier hs-var">xtT</span></a></span><span>
</span><span id="line-504"></span><span>   </span><span id="local-6989586621680856019"><span class="annot"><span class="annottext">foldTM :: forall a b. (a -&gt; b -&gt; b) -&gt; TypeMapX a -&gt; b -&gt; b
</span><a href="#local-6989586621680856019"><span class="hs-identifier hs-var hs-var hs-var hs-var">foldTM</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(a -&gt; b -&gt; b) -&gt; TypeMapX a -&gt; b -&gt; b
forall a b. (a -&gt; b -&gt; b) -&gt; TypeMapX a -&gt; b -&gt; b
</span><a href="GHC.Core.Map.html#fdT"><span class="hs-identifier hs-var">fdT</span></a></span><span>
</span><span id="line-505"></span><span>   </span><span id="local-6989586621680856017"><span class="annot"><span class="annottext">mapTM :: forall a b. (a -&gt; b) -&gt; TypeMapX a -&gt; TypeMapX b
</span><a href="#local-6989586621680856017"><span class="hs-identifier hs-var hs-var hs-var hs-var">mapTM</span></a></span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(a -&gt; b) -&gt; TypeMapX a -&gt; TypeMapX b
forall a b. (a -&gt; b) -&gt; TypeMapX a -&gt; TypeMapX b
</span><a href="GHC.Core.Map.html#mapT"><span class="hs-identifier hs-var">mapT</span></a></span><span>
</span><span id="line-506"></span><span>
</span><span id="line-507"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621680856013"><span class="annot"><span class="hs-identifier hs-type">Eq</span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#DeBruijn"><span class="hs-identifier hs-type">DeBruijn</span></a></span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span class="hs-special">)</span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-508"></span><span>  </span><span id="local-6989586621680855989"><span class="annot"><span class="annottext">env_t :: DeBruijn Type
</span><a href="#local-6989586621680855989"><span class="hs-identifier hs-var">env_t</span></a></span></span><span class="hs-glyph">@</span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-type">D</span></a></span><span> </span><span id="local-6989586621680855988"><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855988"><span class="hs-identifier hs-var">env</span></a></span></span><span> </span><span id="local-6989586621680855987"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855987"><span class="hs-identifier hs-var">t</span></a></span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621680855986"><span class="annot"><span class="annottext">== :: DeBruijn Type -&gt; DeBruijn Type -&gt; Bool
</span><span class="hs-operator hs-var hs-var hs-var hs-var">==</span></span></span><span> </span><span id="local-6989586621680855985"><span class="annot"><span class="annottext">env_t' :: DeBruijn Type
</span><a href="#local-6989586621680855985"><span class="hs-identifier hs-var">env_t'</span></a></span></span><span class="hs-glyph">@</span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-type">D</span></a></span><span> </span><span id="local-6989586621680855984"><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855984"><span class="hs-identifier hs-var">env'</span></a></span></span><span> </span><span id="local-6989586621680855983"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855983"><span class="hs-identifier hs-var">t'</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-509"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span id="local-6989586621680855982"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855982"><span class="hs-identifier hs-var">new_t</span></a></span></span><span>  </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">Type -&gt; Maybe Type
</span><a href="GHC.Core.Type.html#tcView"><span class="hs-identifier hs-var">tcView</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855987"><span class="hs-identifier hs-var">t</span></a></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; Type -&gt; DeBruijn Type
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855988"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855982"><span class="hs-identifier hs-var">new_t</span></a></span><span> </span><span class="annot"><span class="annottext">DeBruijn Type -&gt; DeBruijn Type -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">DeBruijn Type
</span><a href="#local-6989586621680855985"><span class="hs-identifier hs-var">env_t'</span></a></span><span>
</span><span id="line-510"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span id="local-6989586621680855981"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855981"><span class="hs-identifier hs-var">new_t'</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">Type -&gt; Maybe Type
</span><a href="GHC.Core.Type.html#tcView"><span class="hs-identifier hs-var">tcView</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855983"><span class="hs-identifier hs-var">t'</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DeBruijn Type
</span><a href="#local-6989586621680855989"><span class="hs-identifier hs-var">env_t</span></a></span><span>       </span><span class="annot"><span class="annottext">DeBruijn Type -&gt; DeBruijn Type -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; Type -&gt; DeBruijn Type
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855984"><span class="hs-identifier hs-var">env'</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855981"><span class="hs-identifier hs-var">new_t'</span></a></span><span>
</span><span id="line-511"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>
</span><span id="line-512"></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855987"><span class="hs-identifier hs-var">t</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855983"><span class="hs-identifier hs-var">t'</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-513"></span><span>        </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#CastTy"><span class="hs-identifier hs-type">CastTy</span></a></span><span> </span><span id="local-6989586621680855979"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855979"><span class="hs-identifier hs-var">t1</span></a></span></span><span> </span><span class="annot"><span class="annottext">Coercion
</span><span class="hs-identifier">_</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Type
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; Type -&gt; DeBruijn Type
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855988"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855979"><span class="hs-identifier hs-var">t1</span></a></span><span> </span><span class="annot"><span class="annottext">DeBruijn Type -&gt; DeBruijn Type -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; Type -&gt; DeBruijn Type
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855988"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855983"><span class="hs-identifier hs-var">t'</span></a></span><span>
</span><span id="line-514"></span><span>        </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Type
</span><span class="hs-identifier">_</span></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#CastTy"><span class="hs-identifier hs-type">CastTy</span></a></span><span> </span><span id="local-6989586621680855978"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855978"><span class="hs-identifier hs-var">t1'</span></a></span></span><span> </span><span class="annot"><span class="annottext">Coercion
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; Type -&gt; DeBruijn Type
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855988"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855987"><span class="hs-identifier hs-var">t</span></a></span><span>  </span><span class="annot"><span class="annottext">DeBruijn Type -&gt; DeBruijn Type -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; Type -&gt; DeBruijn Type
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855988"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855978"><span class="hs-identifier hs-var">t1'</span></a></span><span>
</span><span id="line-515"></span><span>
</span><span id="line-516"></span><span>        </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#TyVarTy"><span class="hs-identifier hs-type">TyVarTy</span></a></span><span> </span><span id="local-6989586621680855976"><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680855976"><span class="hs-identifier hs-var">v</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#TyVarTy"><span class="hs-identifier hs-type">TyVarTy</span></a></span><span> </span><span id="local-6989586621680855975"><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680855975"><span class="hs-identifier hs-var">v'</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-517"></span><span>            </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; Id -&gt; Maybe BoundVar
</span><a href="GHC.Core.Map.html#lookupCME"><span class="hs-identifier hs-var">lookupCME</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855988"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680855976"><span class="hs-identifier hs-var">v</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; Id -&gt; Maybe BoundVar
</span><a href="GHC.Core.Map.html#lookupCME"><span class="hs-identifier hs-var">lookupCME</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855984"><span class="hs-identifier hs-var">env'</span></a></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680855975"><span class="hs-identifier hs-var">v'</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-518"></span><span>                </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span id="local-6989586621680855974"><span class="annot"><span class="annottext">BoundVar
</span><a href="#local-6989586621680855974"><span class="hs-identifier hs-var">bv</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span id="local-6989586621680855973"><span class="annot"><span class="annottext">BoundVar
</span><a href="#local-6989586621680855973"><span class="hs-identifier hs-var">bv'</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">BoundVar
</span><a href="#local-6989586621680855974"><span class="hs-identifier hs-var">bv</span></a></span><span> </span><span class="annot"><span class="annottext">BoundVar -&gt; BoundVar -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">BoundVar
</span><a href="#local-6989586621680855973"><span class="hs-identifier hs-var">bv'</span></a></span><span>
</span><span id="line-519"></span><span>                </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Maybe BoundVar
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Maybe BoundVar
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span class="hs-special">)</span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680855976"><span class="hs-identifier hs-var">v</span></a></span><span> </span><span class="annot"><span class="annottext">Id -&gt; Id -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680855975"><span class="hs-identifier hs-var">v'</span></a></span><span>
</span><span id="line-520"></span><span>                </span><span class="annot"><span class="annottext">(Maybe BoundVar, Maybe BoundVar)
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-521"></span><span>                </span><span class="hs-comment">-- See Note [Equality on AppTys] in GHC.Core.Type</span><span>
</span><span id="line-522"></span><span>        </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#AppTy"><span class="hs-identifier hs-type">AppTy</span></a></span><span> </span><span id="local-6989586621680855972"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855972"><span class="hs-identifier hs-var">t1</span></a></span></span><span> </span><span id="local-6989586621680855971"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855971"><span class="hs-identifier hs-var">t2</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680855970"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855970"><span class="hs-identifier hs-var">s</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span class="hs-special">(</span><span id="local-6989586621680855969"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855969"><span class="hs-identifier hs-var">t1'</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680855968"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855968"><span class="hs-identifier hs-var">t2'</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">HasDebugCallStack =&gt; Type -&gt; Maybe (Type, Type)
Type -&gt; Maybe (Type, Type)
</span><a href="GHC.Core.Type.html#repSplitAppTy_maybe"><span class="hs-identifier hs-var">repSplitAppTy_maybe</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855970"><span class="hs-identifier hs-var">s</span></a></span><span>
</span><span id="line-523"></span><span>            </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; Type -&gt; DeBruijn Type
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855988"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855972"><span class="hs-identifier hs-var">t1</span></a></span><span> </span><span class="annot"><span class="annottext">DeBruijn Type -&gt; DeBruijn Type -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; Type -&gt; DeBruijn Type
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855984"><span class="hs-identifier hs-var">env'</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855969"><span class="hs-identifier hs-var">t1'</span></a></span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; Bool
</span><span class="hs-operator hs-var">&amp;&amp;</span></span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; Type -&gt; DeBruijn Type
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855988"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855971"><span class="hs-identifier hs-var">t2</span></a></span><span> </span><span class="annot"><span class="annottext">DeBruijn Type -&gt; DeBruijn Type -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; Type -&gt; DeBruijn Type
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855984"><span class="hs-identifier hs-var">env'</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855968"><span class="hs-identifier hs-var">t2'</span></a></span><span>
</span><span id="line-524"></span><span>        </span><span class="hs-special">(</span><span id="local-6989586621680855966"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855966"><span class="hs-identifier hs-var">s</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#AppTy"><span class="hs-identifier hs-type">AppTy</span></a></span><span> </span><span id="local-6989586621680855965"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855965"><span class="hs-identifier hs-var">t1'</span></a></span></span><span> </span><span id="local-6989586621680855964"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855964"><span class="hs-identifier hs-var">t2'</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span class="hs-special">(</span><span id="local-6989586621680855963"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855963"><span class="hs-identifier hs-var">t1</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680855962"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855962"><span class="hs-identifier hs-var">t2</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">HasDebugCallStack =&gt; Type -&gt; Maybe (Type, Type)
Type -&gt; Maybe (Type, Type)
</span><a href="GHC.Core.Type.html#repSplitAppTy_maybe"><span class="hs-identifier hs-var">repSplitAppTy_maybe</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855966"><span class="hs-identifier hs-var">s</span></a></span><span>
</span><span id="line-525"></span><span>            </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; Type -&gt; DeBruijn Type
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855988"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855963"><span class="hs-identifier hs-var">t1</span></a></span><span> </span><span class="annot"><span class="annottext">DeBruijn Type -&gt; DeBruijn Type -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; Type -&gt; DeBruijn Type
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855984"><span class="hs-identifier hs-var">env'</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855965"><span class="hs-identifier hs-var">t1'</span></a></span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; Bool
</span><span class="hs-operator hs-var">&amp;&amp;</span></span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; Type -&gt; DeBruijn Type
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855988"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855962"><span class="hs-identifier hs-var">t2</span></a></span><span> </span><span class="annot"><span class="annottext">DeBruijn Type -&gt; DeBruijn Type -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; Type -&gt; DeBruijn Type
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855984"><span class="hs-identifier hs-var">env'</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855964"><span class="hs-identifier hs-var">t2'</span></a></span><span>
</span><span id="line-526"></span><span>        </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#FunTy"><span class="hs-identifier hs-type">FunTy</span></a></span><span> </span><span class="annot"><span class="annottext">AnonArgFlag
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680855960"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855960"><span class="hs-identifier hs-var">w1</span></a></span></span><span> </span><span id="local-6989586621680855959"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855959"><span class="hs-identifier hs-var">t1</span></a></span></span><span> </span><span id="local-6989586621680855958"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855958"><span class="hs-identifier hs-var">t2</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#FunTy"><span class="hs-identifier hs-type">FunTy</span></a></span><span> </span><span class="annot"><span class="annottext">AnonArgFlag
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680855957"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855957"><span class="hs-identifier hs-var">w1'</span></a></span></span><span> </span><span id="local-6989586621680855956"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855956"><span class="hs-identifier hs-var">t1'</span></a></span></span><span> </span><span id="local-6989586621680855955"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855955"><span class="hs-identifier hs-var">t2'</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-527"></span><span>            </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; Type -&gt; DeBruijn Type
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855988"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855960"><span class="hs-identifier hs-var">w1</span></a></span><span> </span><span class="annot"><span class="annottext">DeBruijn Type -&gt; DeBruijn Type -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; Type -&gt; DeBruijn Type
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855988"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855957"><span class="hs-identifier hs-var">w1'</span></a></span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; Bool
</span><span class="hs-operator hs-var">&amp;&amp;</span></span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; Type -&gt; DeBruijn Type
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855988"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855959"><span class="hs-identifier hs-var">t1</span></a></span><span> </span><span class="annot"><span class="annottext">DeBruijn Type -&gt; DeBruijn Type -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; Type -&gt; DeBruijn Type
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855984"><span class="hs-identifier hs-var">env'</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855956"><span class="hs-identifier hs-var">t1'</span></a></span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; Bool
</span><span class="hs-operator hs-var">&amp;&amp;</span></span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; Type -&gt; DeBruijn Type
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855988"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855958"><span class="hs-identifier hs-var">t2</span></a></span><span> </span><span class="annot"><span class="annottext">DeBruijn Type -&gt; DeBruijn Type -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; Type -&gt; DeBruijn Type
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855984"><span class="hs-identifier hs-var">env'</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855955"><span class="hs-identifier hs-var">t2'</span></a></span><span>
</span><span id="line-528"></span><span>        </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#TyConApp"><span class="hs-identifier hs-type">TyConApp</span></a></span><span> </span><span id="local-6989586621680855954"><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680855954"><span class="hs-identifier hs-var">tc</span></a></span></span><span> </span><span id="local-6989586621680855953"><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680855953"><span class="hs-identifier hs-var">tys</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#TyConApp"><span class="hs-identifier hs-type">TyConApp</span></a></span><span> </span><span id="local-6989586621680855952"><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680855952"><span class="hs-identifier hs-var">tc'</span></a></span></span><span> </span><span id="local-6989586621680855951"><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680855951"><span class="hs-identifier hs-var">tys'</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-529"></span><span>            </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680855954"><span class="hs-identifier hs-var">tc</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; TyCon -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680855952"><span class="hs-identifier hs-var">tc'</span></a></span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; Bool
</span><span class="hs-operator hs-var">&amp;&amp;</span></span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; [Type] -&gt; DeBruijn [Type]
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855988"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680855953"><span class="hs-identifier hs-var">tys</span></a></span><span> </span><span class="annot"><span class="annottext">DeBruijn [Type] -&gt; DeBruijn [Type] -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; [Type] -&gt; DeBruijn [Type]
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855984"><span class="hs-identifier hs-var">env'</span></a></span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680855951"><span class="hs-identifier hs-var">tys'</span></a></span><span>
</span><span id="line-530"></span><span>        </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#LitTy"><span class="hs-identifier hs-type">LitTy</span></a></span><span> </span><span id="local-6989586621680855949"><span class="annot"><span class="annottext">TyLit
</span><a href="#local-6989586621680855949"><span class="hs-identifier hs-var">l</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#LitTy"><span class="hs-identifier hs-type">LitTy</span></a></span><span> </span><span id="local-6989586621680855948"><span class="annot"><span class="annottext">TyLit
</span><a href="#local-6989586621680855948"><span class="hs-identifier hs-var">l'</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-531"></span><span>            </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">TyLit
</span><a href="#local-6989586621680855949"><span class="hs-identifier hs-var">l</span></a></span><span> </span><span class="annot"><span class="annottext">TyLit -&gt; TyLit -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">TyLit
</span><a href="#local-6989586621680855948"><span class="hs-identifier hs-var">l'</span></a></span><span>
</span><span id="line-532"></span><span>        </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#ForAllTy"><span class="hs-identifier hs-type">ForAllTy</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Var.html#Bndr"><span class="hs-identifier hs-type">Bndr</span></a></span><span> </span><span id="local-6989586621680855945"><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680855945"><span class="hs-identifier hs-var">tv</span></a></span></span><span> </span><span class="annot"><span class="annottext">ArgFlag
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621680855944"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855944"><span class="hs-identifier hs-var">ty</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#ForAllTy"><span class="hs-identifier hs-type">ForAllTy</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Var.html#Bndr"><span class="hs-identifier hs-type">Bndr</span></a></span><span> </span><span id="local-6989586621680855943"><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680855943"><span class="hs-identifier hs-var">tv'</span></a></span></span><span> </span><span class="annot"><span class="annottext">ArgFlag
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621680855942"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855942"><span class="hs-identifier hs-var">ty'</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-533"></span><span>            </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; Type -&gt; DeBruijn Type
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855988"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Id -&gt; Type
</span><a href="GHC.Types.Var.html#varType"><span class="hs-identifier hs-var hs-var">varType</span></a></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680855945"><span class="hs-identifier hs-var">tv</span></a></span><span class="hs-special">)</span><span>      </span><span class="annot"><span class="annottext">DeBruijn Type -&gt; DeBruijn Type -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; Type -&gt; DeBruijn Type
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855984"><span class="hs-identifier hs-var">env'</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Id -&gt; Type
</span><a href="GHC.Types.Var.html#varType"><span class="hs-identifier hs-var hs-var">varType</span></a></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680855943"><span class="hs-identifier hs-var">tv'</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; Bool
</span><span class="hs-operator hs-var">&amp;&amp;</span></span><span>
</span><span id="line-534"></span><span>               </span><span class="annot"><span class="annottext">CmEnv -&gt; Type -&gt; DeBruijn Type
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; Id -&gt; CmEnv
</span><a href="GHC.Core.Map.html#extendCME"><span class="hs-identifier hs-var">extendCME</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855988"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680855945"><span class="hs-identifier hs-var">tv</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855944"><span class="hs-identifier hs-var">ty</span></a></span><span> </span><span class="annot"><span class="annottext">DeBruijn Type -&gt; DeBruijn Type -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; Type -&gt; DeBruijn Type
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; Id -&gt; CmEnv
</span><a href="GHC.Core.Map.html#extendCME"><span class="hs-identifier hs-var">extendCME</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855984"><span class="hs-identifier hs-var">env'</span></a></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680855943"><span class="hs-identifier hs-var">tv'</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855942"><span class="hs-identifier hs-var">ty'</span></a></span><span>
</span><span id="line-535"></span><span>        </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#CoercionTy"><span class="hs-identifier hs-type">CoercionTy</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#CoercionTy"><span class="hs-identifier hs-type">CoercionTy</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span>
</span><span id="line-536"></span><span>            </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-537"></span><span>        </span><span class="annot"><span class="annottext">(Type, Type)
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-538"></span><span>
</span><span id="line-539"></span><span id="local-6989586621680857025"><span class="hs-keyword">instance</span><span> </span><span class="hs-pragma">{-# OVERLAPPING</span><span> </span><span class="hs-pragma">#-}</span><span>
</span><span id="line-540"></span><span>         </span><span id="local-6989586621680855938"><span class="annot"><a href="GHC.Utils.Outputable.html#Outputable"><span class="hs-identifier hs-type">Outputable</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857025"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#Outputable"><span class="hs-identifier hs-type">Outputable</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#TypeMapG"><span class="hs-identifier hs-type">TypeMapG</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857025"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-541"></span><span>  </span><span id="local-6989586621680855932"><span class="annot"><span class="annottext">ppr :: TypeMapG a -&gt; SDoc
</span><a href="#local-6989586621680855932"><span class="hs-identifier hs-var hs-var hs-var hs-var">ppr</span></a></span></span><span> </span><span id="local-6989586621680855931"><span class="annot"><span class="annottext">TypeMapG a
</span><a href="#local-6989586621680855931"><span class="hs-identifier hs-var">m</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;TypeMap elts&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">[a] -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(a -&gt; [a] -&gt; [a]) -&gt; TypeMapG a -&gt; [a] -&gt; [a]
forall (m :: * -&gt; *) a b.
TrieMap m =&gt;
(a -&gt; b -&gt; b) -&gt; m a -&gt; b -&gt; b
</span><a href="GHC.Data.TrieMap.html#foldTM"><span class="hs-identifier hs-var">foldTM</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-glyph">:</span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">TypeMapG a
</span><a href="#local-6989586621680855931"><span class="hs-identifier hs-var">m</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span class="hs-special">)</span></span><span>
</span><span id="line-542"></span><span>
</span><span id="line-543"></span><span id="local-6989586621680855930"><span class="annot"><a href="GHC.Core.Map.html#emptyT"><span class="hs-identifier hs-type">emptyT</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#TypeMapX"><span class="hs-identifier hs-type">TypeMapX</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680855930"><span class="hs-identifier hs-type">a</span></a></span></span><span>
</span><span id="line-544"></span><span id="emptyT"><span class="annot"><span class="annottext">emptyT :: forall a. TypeMapX a
</span><a href="GHC.Core.Map.html#emptyT"><span class="hs-identifier hs-var hs-var">emptyT</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TM :: forall a.
VarMap a
-&gt; TypeMapG (TypeMapG a)
-&gt; DNameEnv a
-&gt; TypeMapG (BndrMap a)
-&gt; TyLitMap a
-&gt; Maybe a
-&gt; TypeMapX a
</span><a href="GHC.Core.Map.html#TM"><span class="hs-identifier hs-type">TM</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">tm_var :: VarMap a
</span><a href="GHC.Core.Map.html#tm_var"><span class="hs-identifier hs-var">tm_var</span></a></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">VarMap a
forall (m :: * -&gt; *) a. TrieMap m =&gt; m a
</span><a href="GHC.Data.TrieMap.html#emptyTM"><span class="hs-identifier hs-var">emptyTM</span></a></span><span>
</span><span id="line-545"></span><span>            </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">tm_app :: TypeMapG (TypeMapG a)
</span><a href="GHC.Core.Map.html#tm_app"><span class="hs-identifier hs-var">tm_app</span></a></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeMapG (TypeMapG a)
forall (m :: * -&gt; *) a. TrieMap m =&gt; m a
</span><a href="GHC.Data.TrieMap.html#emptyTM"><span class="hs-identifier hs-var">emptyTM</span></a></span><span>
</span><span id="line-546"></span><span>            </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">tm_tycon :: DNameEnv a
</span><a href="GHC.Core.Map.html#tm_tycon"><span class="hs-identifier hs-var">tm_tycon</span></a></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DNameEnv a
forall a. DNameEnv a
</span><a href="GHC.Types.Name.Env.html#emptyDNameEnv"><span class="hs-identifier hs-var">emptyDNameEnv</span></a></span><span>
</span><span id="line-547"></span><span>            </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">tm_forall :: TypeMapG (BndrMap a)
</span><a href="GHC.Core.Map.html#tm_forall"><span class="hs-identifier hs-var">tm_forall</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeMapG (BndrMap a)
forall (m :: * -&gt; *) a. TrieMap m =&gt; m a
</span><a href="GHC.Data.TrieMap.html#emptyTM"><span class="hs-identifier hs-var">emptyTM</span></a></span><span>
</span><span id="line-548"></span><span>            </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">tm_tylit :: TyLitMap a
</span><a href="GHC.Core.Map.html#tm_tylit"><span class="hs-identifier hs-var">tm_tylit</span></a></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyLitMap a
forall a. TyLitMap a
</span><a href="GHC.Core.Map.html#emptyTyLitMap"><span class="hs-identifier hs-var">emptyTyLitMap</span></a></span><span>
</span><span id="line-549"></span><span>            </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">tm_coerce :: Maybe a
</span><a href="GHC.Core.Map.html#tm_coerce"><span class="hs-identifier hs-var">tm_coerce</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Maybe a
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-550"></span><span>
</span><span id="line-551"></span><span id="local-6989586621680855921"><span id="local-6989586621680855922"><span class="annot"><a href="GHC.Core.Map.html#mapT"><span class="hs-identifier hs-type">mapT</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621680855922"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-glyph">-&gt;</span><span class="annot"><a href="#local-6989586621680855921"><span class="hs-identifier hs-type">b</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#TypeMapX"><span class="hs-identifier hs-type">TypeMapX</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680855922"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#TypeMapX"><span class="hs-identifier hs-type">TypeMapX</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680855921"><span class="hs-identifier hs-type">b</span></a></span></span></span><span>
</span><span id="line-552"></span><span id="mapT"><span class="annot"><span class="annottext">mapT :: forall a b. (a -&gt; b) -&gt; TypeMapX a -&gt; TypeMapX b
</span><a href="GHC.Core.Map.html#mapT"><span class="hs-identifier hs-var hs-var">mapT</span></a></span></span><span> </span><span id="local-6989586621680855906"><span class="annot"><span class="annottext">a -&gt; b
</span><a href="#local-6989586621680855906"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#TM"><span class="hs-identifier hs-type">TM</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">tm_var :: forall a. TypeMapX a -&gt; VarMap a
</span><a href="GHC.Core.Map.html#tm_var"><span class="hs-identifier hs-var">tm_var</span></a></span><span>  </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680855905"><span class="annot"><span class="annottext">VarMap a
</span><a href="#local-6989586621680855905"><span class="hs-identifier hs-var">tvar</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">tm_app :: forall a. TypeMapX a -&gt; TypeMapG (TypeMapG a)
</span><a href="GHC.Core.Map.html#tm_app"><span class="hs-identifier hs-var">tm_app</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680855904"><span class="annot"><span class="annottext">TypeMapG (TypeMapG a)
</span><a href="#local-6989586621680855904"><span class="hs-identifier hs-var">tapp</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">tm_tycon :: forall a. TypeMapX a -&gt; DNameEnv a
</span><a href="GHC.Core.Map.html#tm_tycon"><span class="hs-identifier hs-var">tm_tycon</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680855903"><span class="annot"><span class="annottext">DNameEnv a
</span><a href="#local-6989586621680855903"><span class="hs-identifier hs-var">ttycon</span></a></span></span><span>
</span><span id="line-553"></span><span>           </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">tm_forall :: forall a. TypeMapX a -&gt; TypeMapG (BndrMap a)
</span><a href="GHC.Core.Map.html#tm_forall"><span class="hs-identifier hs-var">tm_forall</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680855902"><span class="annot"><span class="annottext">TypeMapG (BndrMap a)
</span><a href="#local-6989586621680855902"><span class="hs-identifier hs-var">tforall</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">tm_tylit :: forall a. TypeMapX a -&gt; TyLitMap a
</span><a href="GHC.Core.Map.html#tm_tylit"><span class="hs-identifier hs-var">tm_tylit</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680855901"><span class="annot"><span class="annottext">TyLitMap a
</span><a href="#local-6989586621680855901"><span class="hs-identifier hs-var">tlit</span></a></span></span><span>
</span><span id="line-554"></span><span>           </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">tm_coerce :: forall a. TypeMapX a -&gt; Maybe a
</span><a href="GHC.Core.Map.html#tm_coerce"><span class="hs-identifier hs-var">tm_coerce</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680855900"><span class="annot"><span class="annottext">Maybe a
</span><a href="#local-6989586621680855900"><span class="hs-identifier hs-var">tcoerce</span></a></span></span><span> </span><span class="hs-special">}</span><span class="hs-special">)</span><span>
</span><span id="line-555"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TM :: forall a.
VarMap a
-&gt; TypeMapG (TypeMapG a)
-&gt; DNameEnv a
-&gt; TypeMapG (BndrMap a)
-&gt; TyLitMap a
-&gt; Maybe a
-&gt; TypeMapX a
</span><a href="GHC.Core.Map.html#TM"><span class="hs-identifier hs-type">TM</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">tm_var :: VarMap b
</span><a href="GHC.Core.Map.html#tm_var"><span class="hs-identifier hs-var">tm_var</span></a></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(a -&gt; b) -&gt; VarMap a -&gt; VarMap b
forall (m :: * -&gt; *) a b. TrieMap m =&gt; (a -&gt; b) -&gt; m a -&gt; m b
</span><a href="GHC.Data.TrieMap.html#mapTM"><span class="hs-identifier hs-var">mapTM</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b
</span><a href="#local-6989586621680855906"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">VarMap a
</span><a href="#local-6989586621680855905"><span class="hs-identifier hs-var">tvar</span></a></span><span>
</span><span id="line-556"></span><span>       </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">tm_app :: TypeMapG (TypeMapG b)
</span><a href="GHC.Core.Map.html#tm_app"><span class="hs-identifier hs-var">tm_app</span></a></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(TypeMapG a -&gt; TypeMapG b)
-&gt; TypeMapG (TypeMapG a) -&gt; TypeMapG (TypeMapG b)
forall (m :: * -&gt; *) a b. TrieMap m =&gt; (a -&gt; b) -&gt; m a -&gt; m b
</span><a href="GHC.Data.TrieMap.html#mapTM"><span class="hs-identifier hs-var">mapTM</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(a -&gt; b) -&gt; TypeMapG a -&gt; TypeMapG b
forall (m :: * -&gt; *) a b. TrieMap m =&gt; (a -&gt; b) -&gt; m a -&gt; m b
</span><a href="GHC.Data.TrieMap.html#mapTM"><span class="hs-identifier hs-var">mapTM</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b
</span><a href="#local-6989586621680855906"><span class="hs-identifier hs-var">f</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">TypeMapG (TypeMapG a)
</span><a href="#local-6989586621680855904"><span class="hs-identifier hs-var">tapp</span></a></span><span>
</span><span id="line-557"></span><span>       </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">tm_tycon :: DNameEnv b
</span><a href="GHC.Core.Map.html#tm_tycon"><span class="hs-identifier hs-var">tm_tycon</span></a></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(a -&gt; b) -&gt; DNameEnv a -&gt; DNameEnv b
forall (m :: * -&gt; *) a b. TrieMap m =&gt; (a -&gt; b) -&gt; m a -&gt; m b
</span><a href="GHC.Data.TrieMap.html#mapTM"><span class="hs-identifier hs-var">mapTM</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b
</span><a href="#local-6989586621680855906"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">DNameEnv a
</span><a href="#local-6989586621680855903"><span class="hs-identifier hs-var">ttycon</span></a></span><span>
</span><span id="line-558"></span><span>       </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">tm_forall :: TypeMapG (BndrMap b)
</span><a href="GHC.Core.Map.html#tm_forall"><span class="hs-identifier hs-var">tm_forall</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(BndrMap a -&gt; BndrMap b)
-&gt; TypeMapG (BndrMap a) -&gt; TypeMapG (BndrMap b)
forall (m :: * -&gt; *) a b. TrieMap m =&gt; (a -&gt; b) -&gt; m a -&gt; m b
</span><a href="GHC.Data.TrieMap.html#mapTM"><span class="hs-identifier hs-var">mapTM</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(a -&gt; b) -&gt; BndrMap a -&gt; BndrMap b
forall (m :: * -&gt; *) a b. TrieMap m =&gt; (a -&gt; b) -&gt; m a -&gt; m b
</span><a href="GHC.Data.TrieMap.html#mapTM"><span class="hs-identifier hs-var">mapTM</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b
</span><a href="#local-6989586621680855906"><span class="hs-identifier hs-var">f</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">TypeMapG (BndrMap a)
</span><a href="#local-6989586621680855902"><span class="hs-identifier hs-var">tforall</span></a></span><span>
</span><span id="line-559"></span><span>       </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">tm_tylit :: TyLitMap b
</span><a href="GHC.Core.Map.html#tm_tylit"><span class="hs-identifier hs-var">tm_tylit</span></a></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(a -&gt; b) -&gt; TyLitMap a -&gt; TyLitMap b
forall (m :: * -&gt; *) a b. TrieMap m =&gt; (a -&gt; b) -&gt; m a -&gt; m b
</span><a href="GHC.Data.TrieMap.html#mapTM"><span class="hs-identifier hs-var">mapTM</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b
</span><a href="#local-6989586621680855906"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">TyLitMap a
</span><a href="#local-6989586621680855901"><span class="hs-identifier hs-var">tlit</span></a></span><span>
</span><span id="line-560"></span><span>       </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">tm_coerce :: Maybe b
</span><a href="GHC.Core.Map.html#tm_coerce"><span class="hs-identifier hs-var">tm_coerce</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(a -&gt; b) -&gt; Maybe a -&gt; Maybe b
forall (f :: * -&gt; *) a b. Functor f =&gt; (a -&gt; b) -&gt; f a -&gt; f b
</span><a href="../../base/src/GHC.Base.html#fmap"><span class="hs-identifier hs-var">fmap</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b
</span><a href="#local-6989586621680855906"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">Maybe a
</span><a href="#local-6989586621680855900"><span class="hs-identifier hs-var">tcoerce</span></a></span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-561"></span><span>
</span><span id="line-562"></span><span class="hs-comment">-----------------</span><span>
</span><span id="line-563"></span><span id="local-6989586621680857054"><span class="annot"><a href="GHC.Core.Map.html#lkT"><span class="hs-identifier hs-type">lkT</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#DeBruijn"><span class="hs-identifier hs-type">DeBruijn</span></a></span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#TypeMapX"><span class="hs-identifier hs-type">TypeMapX</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857054"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857054"><span class="hs-identifier hs-type">a</span></a></span></span><span>
</span><span id="line-564"></span><span id="lkT"><span class="annot"><span class="annottext">lkT :: forall a. DeBruijn Type -&gt; TypeMapX a -&gt; Maybe a
</span><a href="GHC.Core.Map.html#lkT"><span class="hs-identifier hs-var hs-var">lkT</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-type">D</span></a></span><span> </span><span id="local-6989586621680855881"><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855881"><span class="hs-identifier hs-var">env</span></a></span></span><span> </span><span id="local-6989586621680855880"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855880"><span class="hs-identifier hs-var">ty</span></a></span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621680855879"><span class="annot"><span class="annottext">TypeMapX a
</span><a href="#local-6989586621680855879"><span class="hs-identifier hs-var">m</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Type -&gt; TypeMapX a -&gt; Maybe a
</span><a href="#local-6989586621680855878"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855880"><span class="hs-identifier hs-var">ty</span></a></span><span> </span><span class="annot"><span class="annottext">TypeMapX a
</span><a href="#local-6989586621680855879"><span class="hs-identifier hs-var">m</span></a></span><span>
</span><span id="line-565"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-566"></span><span>    </span><span id="local-6989586621680855878"><span class="annot"><span class="annottext">go :: Type -&gt; TypeMapX a -&gt; Maybe a
</span><a href="#local-6989586621680855878"><span class="hs-identifier hs-var hs-var">go</span></a></span></span><span> </span><span id="local-6989586621680855877"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855877"><span class="hs-identifier hs-var">ty</span></a></span></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span id="local-6989586621680855876"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855876"><span class="hs-identifier hs-var">ty'</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">Type -&gt; Maybe Type
</span><a href="GHC.Core.Map.html#trieMapView"><span class="hs-identifier hs-var">trieMapView</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855877"><span class="hs-identifier hs-var">ty</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Type -&gt; TypeMapX a -&gt; Maybe a
</span><a href="#local-6989586621680855878"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855876"><span class="hs-identifier hs-var">ty'</span></a></span><span>
</span><span id="line-567"></span><span>    </span><span class="annot"><a href="#local-6989586621680855878"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#TyVarTy"><span class="hs-identifier hs-type">TyVarTy</span></a></span><span> </span><span id="local-6989586621680855875"><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680855875"><span class="hs-identifier hs-var">v</span></a></span></span><span class="hs-special">)</span><span>                 </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeMapX a -&gt; VarMap a
forall a. TypeMapX a -&gt; VarMap a
</span><a href="GHC.Core.Map.html#tm_var"><span class="hs-identifier hs-var hs-var">tm_var</span></a></span><span>    </span><span class="annot"><span class="annottext">(TypeMapX a -&gt; VarMap a)
-&gt; (VarMap a -&gt; Maybe a) -&gt; TypeMapX a -&gt; Maybe a
forall a b c. (a -&gt; b) -&gt; (b -&gt; c) -&gt; a -&gt; c
</span><a href="GHC.Data.TrieMap.html#%3E.%3E"><span class="hs-operator hs-var">&gt;.&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; Id -&gt; VarMap a -&gt; Maybe a
forall a. CmEnv -&gt; Id -&gt; VarMap a -&gt; Maybe a
</span><a href="GHC.Core.Map.html#lkVar"><span class="hs-identifier hs-var">lkVar</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855881"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680855875"><span class="hs-identifier hs-var">v</span></a></span><span>
</span><span id="line-568"></span><span>    </span><span class="annot"><a href="#local-6989586621680855878"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#AppTy"><span class="hs-identifier hs-type">AppTy</span></a></span><span> </span><span id="local-6989586621680855874"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855874"><span class="hs-identifier hs-var">t1</span></a></span></span><span> </span><span id="local-6989586621680855873"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855873"><span class="hs-identifier hs-var">t2</span></a></span></span><span class="hs-special">)</span><span>               </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeMapX a -&gt; TypeMapG (TypeMapG a)
forall a. TypeMapX a -&gt; TypeMapG (TypeMapG a)
</span><a href="GHC.Core.Map.html#tm_app"><span class="hs-identifier hs-var hs-var">tm_app</span></a></span><span>    </span><span class="annot"><span class="annottext">(TypeMapX a -&gt; TypeMapG (TypeMapG a))
-&gt; (TypeMapG (TypeMapG a) -&gt; Maybe a) -&gt; TypeMapX a -&gt; Maybe a
forall a b c. (a -&gt; b) -&gt; (b -&gt; c) -&gt; a -&gt; c
</span><a href="GHC.Data.TrieMap.html#%3E.%3E"><span class="hs-operator hs-var">&gt;.&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Key TypeMapX -&gt; TypeMapG (TypeMapG a) -&gt; Maybe (TypeMapG a)
forall (m :: * -&gt; *) a.
(Eq (Key m), TrieMap m) =&gt;
Key m -&gt; GenMap m a -&gt; Maybe a
</span><a href="GHC.Data.TrieMap.html#lkG"><span class="hs-identifier hs-var">lkG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; Type -&gt; DeBruijn Type
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855881"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855874"><span class="hs-identifier hs-var">t1</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-569"></span><span>                                               </span><span class="annot"><span class="annottext">(TypeMapG (TypeMapG a) -&gt; Maybe (TypeMapG a))
-&gt; (TypeMapG a -&gt; Maybe a) -&gt; TypeMapG (TypeMapG a) -&gt; Maybe a
forall (m :: * -&gt; *) a b c.
Monad m =&gt;
(a -&gt; m b) -&gt; (b -&gt; m c) -&gt; a -&gt; m c
</span><a href="../../base/src/Control.Monad.html#%3E%3D%3E"><span class="hs-operator hs-var">&gt;=&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Key TypeMapX -&gt; TypeMapG a -&gt; Maybe a
forall (m :: * -&gt; *) a.
(Eq (Key m), TrieMap m) =&gt;
Key m -&gt; GenMap m a -&gt; Maybe a
</span><a href="GHC.Data.TrieMap.html#lkG"><span class="hs-identifier hs-var">lkG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; Type -&gt; DeBruijn Type
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855881"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855873"><span class="hs-identifier hs-var">t2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-570"></span><span>    </span><span class="annot"><a href="#local-6989586621680855878"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#TyConApp"><span class="hs-identifier hs-type">TyConApp</span></a></span><span> </span><span id="local-6989586621680855872"><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680855872"><span class="hs-identifier hs-var">tc</span></a></span></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span class="hs-special">)</span><span>            </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeMapX a -&gt; DNameEnv a
forall a. TypeMapX a -&gt; DNameEnv a
</span><a href="GHC.Core.Map.html#tm_tycon"><span class="hs-identifier hs-var hs-var">tm_tycon</span></a></span><span>  </span><span class="annot"><span class="annottext">(TypeMapX a -&gt; DNameEnv a)
-&gt; (DNameEnv a -&gt; Maybe a) -&gt; TypeMapX a -&gt; Maybe a
forall a b c. (a -&gt; b) -&gt; (b -&gt; c) -&gt; a -&gt; c
</span><a href="GHC.Data.TrieMap.html#%3E.%3E"><span class="hs-operator hs-var">&gt;.&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; DNameEnv a -&gt; Maybe a
forall n a. NamedThing n =&gt; n -&gt; DNameEnv a -&gt; Maybe a
</span><a href="GHC.Core.Map.html#lkDNamed"><span class="hs-identifier hs-var">lkDNamed</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680855872"><span class="hs-identifier hs-var">tc</span></a></span><span>
</span><span id="line-571"></span><span>    </span><span class="annot"><a href="#local-6989586621680855878"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span id="local-6989586621680855871"><span class="annot"><span class="annottext">ty :: Type
</span><a href="#local-6989586621680855871"><span class="hs-identifier hs-var">ty</span></a></span></span><span class="hs-glyph">@</span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#TyConApp"><span class="hs-identifier hs-type">TyConApp</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Type
</span><span class="hs-identifier">_</span></span><span class="annot"><span class="hs-glyph hs-type">:</span></span><span class="annot"><span class="annottext">[Type]
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span class="hs-special">)</span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc -&gt; TypeMapX a -&gt; Maybe a
forall a. HasCallStack =&gt; String -&gt; SDoc -&gt; a
</span><a href="GHC.Utils.Outputable.html#pprPanic"><span class="hs-identifier hs-var">pprPanic</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;lkT TyConApp&quot;</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Type -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855871"><span class="hs-identifier hs-var">ty</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-572"></span><span>    </span><span class="annot"><a href="#local-6989586621680855878"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#LitTy"><span class="hs-identifier hs-type">LitTy</span></a></span><span> </span><span id="local-6989586621680855869"><span class="annot"><span class="annottext">TyLit
</span><a href="#local-6989586621680855869"><span class="hs-identifier hs-var">l</span></a></span></span><span class="hs-special">)</span><span>                   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeMapX a -&gt; TyLitMap a
forall a. TypeMapX a -&gt; TyLitMap a
</span><a href="GHC.Core.Map.html#tm_tylit"><span class="hs-identifier hs-var hs-var">tm_tylit</span></a></span><span>  </span><span class="annot"><span class="annottext">(TypeMapX a -&gt; TyLitMap a)
-&gt; (TyLitMap a -&gt; Maybe a) -&gt; TypeMapX a -&gt; Maybe a
forall a b c. (a -&gt; b) -&gt; (b -&gt; c) -&gt; a -&gt; c
</span><a href="GHC.Data.TrieMap.html#%3E.%3E"><span class="hs-operator hs-var">&gt;.&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">TyLit -&gt; TyLitMap a -&gt; Maybe a
forall a. TyLit -&gt; TyLitMap a -&gt; Maybe a
</span><a href="GHC.Core.Map.html#lkTyLit"><span class="hs-identifier hs-var">lkTyLit</span></a></span><span> </span><span class="annot"><span class="annottext">TyLit
</span><a href="#local-6989586621680855869"><span class="hs-identifier hs-var">l</span></a></span><span>
</span><span id="line-573"></span><span>    </span><span class="annot"><a href="#local-6989586621680855878"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#ForAllTy"><span class="hs-identifier hs-type">ForAllTy</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Var.html#Bndr"><span class="hs-identifier hs-type">Bndr</span></a></span><span> </span><span id="local-6989586621680855867"><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680855867"><span class="hs-identifier hs-var">tv</span></a></span></span><span> </span><span class="annot"><span class="annottext">ArgFlag
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621680855866"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855866"><span class="hs-identifier hs-var">ty</span></a></span></span><span class="hs-special">)</span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeMapX a -&gt; TypeMapG (BndrMap a)
forall a. TypeMapX a -&gt; TypeMapG (BndrMap a)
</span><a href="GHC.Core.Map.html#tm_forall"><span class="hs-identifier hs-var hs-var">tm_forall</span></a></span><span> </span><span class="annot"><span class="annottext">(TypeMapX a -&gt; TypeMapG (BndrMap a))
-&gt; (TypeMapG (BndrMap a) -&gt; Maybe a) -&gt; TypeMapX a -&gt; Maybe a
forall a b c. (a -&gt; b) -&gt; (b -&gt; c) -&gt; a -&gt; c
</span><a href="GHC.Data.TrieMap.html#%3E.%3E"><span class="hs-operator hs-var">&gt;.&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Key TypeMapX -&gt; TypeMapG (BndrMap a) -&gt; Maybe (BndrMap a)
forall (m :: * -&gt; *) a.
(Eq (Key m), TrieMap m) =&gt;
Key m -&gt; GenMap m a -&gt; Maybe a
</span><a href="GHC.Data.TrieMap.html#lkG"><span class="hs-identifier hs-var">lkG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; Type -&gt; DeBruijn Type
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; Id -&gt; CmEnv
</span><a href="GHC.Core.Map.html#extendCME"><span class="hs-identifier hs-var">extendCME</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855881"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680855867"><span class="hs-identifier hs-var">tv</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855866"><span class="hs-identifier hs-var">ty</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-574"></span><span>                                               </span><span class="annot"><span class="annottext">(TypeMapG (BndrMap a) -&gt; Maybe (BndrMap a))
-&gt; (BndrMap a -&gt; Maybe a) -&gt; TypeMapG (BndrMap a) -&gt; Maybe a
forall (m :: * -&gt; *) a b c.
Monad m =&gt;
(a -&gt; m b) -&gt; (b -&gt; m c) -&gt; a -&gt; m c
</span><a href="../../base/src/Control.Monad.html#%3E%3D%3E"><span class="hs-operator hs-var">&gt;=&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; Id -&gt; BndrMap a -&gt; Maybe a
forall a. CmEnv -&gt; Id -&gt; BndrMap a -&gt; Maybe a
</span><a href="GHC.Core.Map.html#lkBndr"><span class="hs-identifier hs-var">lkBndr</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855881"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680855867"><span class="hs-identifier hs-var">tv</span></a></span><span>
</span><span id="line-575"></span><span>    </span><span class="annot"><a href="#local-6989586621680855878"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span id="local-6989586621680855865"><span class="annot"><span class="annottext">ty :: Type
</span><a href="#local-6989586621680855865"><span class="hs-identifier hs-var">ty</span></a></span></span><span class="hs-glyph">@</span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#FunTy"><span class="hs-identifier hs-type">FunTy</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span>               </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc -&gt; TypeMapX a -&gt; Maybe a
forall a. HasCallStack =&gt; String -&gt; SDoc -&gt; a
</span><a href="GHC.Utils.Outputable.html#pprPanic"><span class="hs-identifier hs-var">pprPanic</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;lkT FunTy&quot;</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Type -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855865"><span class="hs-identifier hs-var">ty</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-576"></span><span>    </span><span class="annot"><a href="#local-6989586621680855878"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#CastTy"><span class="hs-identifier hs-type">CastTy</span></a></span><span> </span><span id="local-6989586621680855864"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855864"><span class="hs-identifier hs-var">t</span></a></span></span><span> </span><span class="annot"><span class="annottext">Coercion
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>                </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Type -&gt; TypeMapX a -&gt; Maybe a
</span><a href="#local-6989586621680855878"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855864"><span class="hs-identifier hs-var">t</span></a></span><span>
</span><span id="line-577"></span><span>    </span><span class="annot"><a href="#local-6989586621680855878"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#CoercionTy"><span class="hs-identifier hs-type">CoercionTy</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span>             </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeMapX a -&gt; Maybe a
forall a. TypeMapX a -&gt; Maybe a
</span><a href="GHC.Core.Map.html#tm_coerce"><span class="hs-identifier hs-var hs-var">tm_coerce</span></a></span><span>
</span><span id="line-578"></span><span>
</span><span id="line-579"></span><span class="hs-comment">-----------------</span><span>
</span><span id="line-580"></span><span id="local-6989586621680857049"><span class="annot"><a href="GHC.Core.Map.html#xtT"><span class="hs-identifier hs-type">xtT</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#DeBruijn"><span class="hs-identifier hs-type">DeBruijn</span></a></span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Data.TrieMap.html#XT"><span class="hs-identifier hs-type">XT</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857049"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#TypeMapX"><span class="hs-identifier hs-type">TypeMapX</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857049"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#TypeMapX"><span class="hs-identifier hs-type">TypeMapX</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857049"><span class="hs-identifier hs-type">a</span></a></span></span><span>
</span><span id="line-581"></span><span id="xtT"><span class="annot"><span class="annottext">xtT :: forall a. DeBruijn Type -&gt; XT a -&gt; TypeMapX a -&gt; TypeMapX a
</span><a href="GHC.Core.Map.html#xtT"><span class="hs-identifier hs-var hs-var">xtT</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-type">D</span></a></span><span> </span><span id="local-6989586621680855845"><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855845"><span class="hs-identifier hs-var">env</span></a></span></span><span> </span><span id="local-6989586621680855844"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855844"><span class="hs-identifier hs-var">ty</span></a></span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621680855843"><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680855843"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span id="local-6989586621680855842"><span class="annot"><span class="annottext">TypeMapX a
</span><a href="#local-6989586621680855842"><span class="hs-identifier hs-var">m</span></a></span></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span id="local-6989586621680855841"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855841"><span class="hs-identifier hs-var">ty'</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">Type -&gt; Maybe Type
</span><a href="GHC.Core.Map.html#trieMapView"><span class="hs-identifier hs-var">trieMapView</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855844"><span class="hs-identifier hs-var">ty</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DeBruijn Type -&gt; XT a -&gt; TypeMapX a -&gt; TypeMapX a
forall a. DeBruijn Type -&gt; XT a -&gt; TypeMapX a -&gt; TypeMapX a
</span><a href="GHC.Core.Map.html#xtT"><span class="hs-identifier hs-var">xtT</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; Type -&gt; DeBruijn Type
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855845"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855841"><span class="hs-identifier hs-var">ty'</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680855843"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">TypeMapX a
</span><a href="#local-6989586621680855842"><span class="hs-identifier hs-var">m</span></a></span><span>
</span><span id="line-582"></span><span>
</span><span id="line-583"></span><span class="annot"><a href="GHC.Core.Map.html#xtT"><span class="hs-identifier hs-var">xtT</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-type">D</span></a></span><span> </span><span id="local-6989586621680855840"><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855840"><span class="hs-identifier hs-var">env</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#TyVarTy"><span class="hs-identifier hs-type">TyVarTy</span></a></span><span> </span><span id="local-6989586621680855839"><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680855839"><span class="hs-identifier hs-var">v</span></a></span></span><span class="hs-special">)</span><span class="hs-special">)</span><span>       </span><span id="local-6989586621680855838"><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680855838"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span id="local-6989586621680855837"><span class="annot"><span class="annottext">TypeMapX a
</span><a href="#local-6989586621680855837"><span class="hs-identifier hs-var">m</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeMapX a
</span><a href="#local-6989586621680855837"><span class="hs-identifier hs-var">m</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">tm_var :: VarMap a
</span><a href="GHC.Core.Map.html#tm_var"><span class="hs-identifier hs-var">tm_var</span></a></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeMapX a -&gt; VarMap a
forall a. TypeMapX a -&gt; VarMap a
</span><a href="GHC.Core.Map.html#tm_var"><span class="hs-identifier hs-var hs-var">tm_var</span></a></span><span> </span><span class="annot"><span class="annottext">TypeMapX a
</span><a href="#local-6989586621680855837"><span class="hs-identifier hs-var">m</span></a></span><span> </span><span class="annot"><span class="annottext">VarMap a -&gt; (VarMap a -&gt; VarMap a) -&gt; VarMap a
forall a b. a -&gt; (a -&gt; b) -&gt; b
</span><a href="GHC.Data.TrieMap.html#%7C%3E"><span class="hs-operator hs-var">|&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; Id -&gt; XT a -&gt; VarMap a -&gt; VarMap a
forall a. CmEnv -&gt; Id -&gt; XT a -&gt; VarMap a -&gt; VarMap a
</span><a href="GHC.Core.Map.html#xtVar"><span class="hs-identifier hs-var">xtVar</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855840"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680855839"><span class="hs-identifier hs-var">v</span></a></span><span> </span><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680855838"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-584"></span><span class="annot"><a href="GHC.Core.Map.html#xtT"><span class="hs-identifier hs-var">xtT</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-type">D</span></a></span><span> </span><span id="local-6989586621680855836"><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855836"><span class="hs-identifier hs-var">env</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#AppTy"><span class="hs-identifier hs-type">AppTy</span></a></span><span> </span><span id="local-6989586621680855835"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855835"><span class="hs-identifier hs-var">t1</span></a></span></span><span> </span><span id="local-6989586621680855834"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855834"><span class="hs-identifier hs-var">t2</span></a></span></span><span class="hs-special">)</span><span class="hs-special">)</span><span>     </span><span id="local-6989586621680855833"><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680855833"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span id="local-6989586621680855832"><span class="annot"><span class="annottext">TypeMapX a
</span><a href="#local-6989586621680855832"><span class="hs-identifier hs-var">m</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeMapX a
</span><a href="#local-6989586621680855832"><span class="hs-identifier hs-var">m</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">tm_app :: TypeMapG (TypeMapG a)
</span><a href="GHC.Core.Map.html#tm_app"><span class="hs-identifier hs-var">tm_app</span></a></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeMapX a -&gt; TypeMapG (TypeMapG a)
forall a. TypeMapX a -&gt; TypeMapG (TypeMapG a)
</span><a href="GHC.Core.Map.html#tm_app"><span class="hs-identifier hs-var hs-var">tm_app</span></a></span><span> </span><span class="annot"><span class="annottext">TypeMapX a
</span><a href="#local-6989586621680855832"><span class="hs-identifier hs-var">m</span></a></span><span> </span><span class="annot"><span class="annottext">TypeMapG (TypeMapG a)
-&gt; (TypeMapG (TypeMapG a) -&gt; TypeMapG (TypeMapG a))
-&gt; TypeMapG (TypeMapG a)
forall a b. a -&gt; (a -&gt; b) -&gt; b
</span><a href="GHC.Data.TrieMap.html#%7C%3E"><span class="hs-operator hs-var">|&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Key TypeMapX
-&gt; XT (TypeMapG a)
-&gt; TypeMapG (TypeMapG a)
-&gt; TypeMapG (TypeMapG a)
forall (m :: * -&gt; *) a.
(Eq (Key m), TrieMap m) =&gt;
Key m -&gt; XT a -&gt; GenMap m a -&gt; GenMap m a
</span><a href="GHC.Data.TrieMap.html#xtG"><span class="hs-identifier hs-var">xtG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; Type -&gt; DeBruijn Type
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855836"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855835"><span class="hs-identifier hs-var">t1</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-585"></span><span>                                                            </span><span class="annot"><span class="annottext">(XT (TypeMapG a) -&gt; TypeMapG (TypeMapG a) -&gt; TypeMapG (TypeMapG a))
-&gt; (TypeMapG a -&gt; TypeMapG a)
-&gt; TypeMapG (TypeMapG a)
-&gt; TypeMapG (TypeMapG a)
forall (m2 :: * -&gt; *) a (m1 :: * -&gt; *).
TrieMap m2 =&gt;
(XT (m2 a) -&gt; m1 (m2 a) -&gt; m1 (m2 a))
-&gt; (m2 a -&gt; m2 a) -&gt; m1 (m2 a) -&gt; m1 (m2 a)
</span><a href="GHC.Data.TrieMap.html#%7C%3E%3E"><span class="hs-operator hs-var">|&gt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Key TypeMapX -&gt; XT a -&gt; TypeMapG a -&gt; TypeMapG a
forall (m :: * -&gt; *) a.
(Eq (Key m), TrieMap m) =&gt;
Key m -&gt; XT a -&gt; GenMap m a -&gt; GenMap m a
</span><a href="GHC.Data.TrieMap.html#xtG"><span class="hs-identifier hs-var">xtG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; Type -&gt; DeBruijn Type
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855836"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855834"><span class="hs-identifier hs-var">t2</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680855833"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-586"></span><span class="annot"><a href="GHC.Core.Map.html#xtT"><span class="hs-identifier hs-var">xtT</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-type">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><span class="hs-identifier">_</span></span><span>   </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#TyConApp"><span class="hs-identifier hs-type">TyConApp</span></a></span><span> </span><span id="local-6989586621680855831"><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680855831"><span class="hs-identifier hs-var">tc</span></a></span></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span class="hs-special">)</span><span class="hs-special">)</span><span>  </span><span id="local-6989586621680855830"><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680855830"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span id="local-6989586621680855829"><span class="annot"><span class="annottext">TypeMapX a
</span><a href="#local-6989586621680855829"><span class="hs-identifier hs-var">m</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeMapX a
</span><a href="#local-6989586621680855829"><span class="hs-identifier hs-var">m</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">tm_tycon :: DNameEnv a
</span><a href="GHC.Core.Map.html#tm_tycon"><span class="hs-identifier hs-var">tm_tycon</span></a></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeMapX a -&gt; DNameEnv a
forall a. TypeMapX a -&gt; DNameEnv a
</span><a href="GHC.Core.Map.html#tm_tycon"><span class="hs-identifier hs-var hs-var">tm_tycon</span></a></span><span> </span><span class="annot"><span class="annottext">TypeMapX a
</span><a href="#local-6989586621680855829"><span class="hs-identifier hs-var">m</span></a></span><span> </span><span class="annot"><span class="annottext">DNameEnv a -&gt; (DNameEnv a -&gt; DNameEnv a) -&gt; DNameEnv a
forall a b. a -&gt; (a -&gt; b) -&gt; b
</span><a href="GHC.Data.TrieMap.html#%7C%3E"><span class="hs-operator hs-var">|&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; XT a -&gt; DNameEnv a -&gt; DNameEnv a
forall n a. NamedThing n =&gt; n -&gt; XT a -&gt; DNameEnv a -&gt; DNameEnv a
</span><a href="GHC.Core.Map.html#xtDNamed"><span class="hs-identifier hs-var">xtDNamed</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680855831"><span class="hs-identifier hs-var">tc</span></a></span><span> </span><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680855830"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-587"></span><span class="annot"><a href="GHC.Core.Map.html#xtT"><span class="hs-identifier hs-var">xtT</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-type">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><span class="hs-identifier">_</span></span><span>   </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#LitTy"><span class="hs-identifier hs-type">LitTy</span></a></span><span> </span><span id="local-6989586621680855828"><span class="annot"><span class="annottext">TyLit
</span><a href="#local-6989586621680855828"><span class="hs-identifier hs-var">l</span></a></span></span><span class="hs-special">)</span><span class="hs-special">)</span><span>         </span><span id="local-6989586621680855827"><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680855827"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span id="local-6989586621680855826"><span class="annot"><span class="annottext">TypeMapX a
</span><a href="#local-6989586621680855826"><span class="hs-identifier hs-var">m</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeMapX a
</span><a href="#local-6989586621680855826"><span class="hs-identifier hs-var">m</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">tm_tylit :: TyLitMap a
</span><a href="GHC.Core.Map.html#tm_tylit"><span class="hs-identifier hs-var">tm_tylit</span></a></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeMapX a -&gt; TyLitMap a
forall a. TypeMapX a -&gt; TyLitMap a
</span><a href="GHC.Core.Map.html#tm_tylit"><span class="hs-identifier hs-var hs-var">tm_tylit</span></a></span><span> </span><span class="annot"><span class="annottext">TypeMapX a
</span><a href="#local-6989586621680855826"><span class="hs-identifier hs-var">m</span></a></span><span> </span><span class="annot"><span class="annottext">TyLitMap a -&gt; (TyLitMap a -&gt; TyLitMap a) -&gt; TyLitMap a
forall a b. a -&gt; (a -&gt; b) -&gt; b
</span><a href="GHC.Data.TrieMap.html#%7C%3E"><span class="hs-operator hs-var">|&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">TyLit -&gt; XT a -&gt; TyLitMap a -&gt; TyLitMap a
forall a. TyLit -&gt; XT a -&gt; TyLitMap a -&gt; TyLitMap a
</span><a href="GHC.Core.Map.html#xtTyLit"><span class="hs-identifier hs-var">xtTyLit</span></a></span><span> </span><span class="annot"><span class="annottext">TyLit
</span><a href="#local-6989586621680855828"><span class="hs-identifier hs-var">l</span></a></span><span> </span><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680855827"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-588"></span><span class="annot"><a href="GHC.Core.Map.html#xtT"><span class="hs-identifier hs-var">xtT</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-type">D</span></a></span><span> </span><span id="local-6989586621680855824"><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855824"><span class="hs-identifier hs-var">env</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#CastTy"><span class="hs-identifier hs-type">CastTy</span></a></span><span> </span><span id="local-6989586621680855823"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855823"><span class="hs-identifier hs-var">t</span></a></span></span><span> </span><span class="annot"><span class="annottext">Coercion
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span class="hs-special">)</span><span>      </span><span id="local-6989586621680855822"><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680855822"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span id="local-6989586621680855821"><span class="annot"><span class="annottext">TypeMapX a
</span><a href="#local-6989586621680855821"><span class="hs-identifier hs-var">m</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DeBruijn Type -&gt; XT a -&gt; TypeMapX a -&gt; TypeMapX a
forall a. DeBruijn Type -&gt; XT a -&gt; TypeMapX a -&gt; TypeMapX a
</span><a href="GHC.Core.Map.html#xtT"><span class="hs-identifier hs-var">xtT</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; Type -&gt; DeBruijn Type
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855824"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855823"><span class="hs-identifier hs-var">t</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680855822"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">TypeMapX a
</span><a href="#local-6989586621680855821"><span class="hs-identifier hs-var">m</span></a></span><span>
</span><span id="line-589"></span><span class="annot"><a href="GHC.Core.Map.html#xtT"><span class="hs-identifier hs-var">xtT</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-type">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><span class="hs-identifier">_</span></span><span>   </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#CoercionTy"><span class="hs-identifier hs-type">CoercionTy</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span class="hs-special">)</span><span>   </span><span id="local-6989586621680855820"><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680855820"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span id="local-6989586621680855819"><span class="annot"><span class="annottext">TypeMapX a
</span><a href="#local-6989586621680855819"><span class="hs-identifier hs-var">m</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeMapX a
</span><a href="#local-6989586621680855819"><span class="hs-identifier hs-var">m</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">tm_coerce :: Maybe a
</span><a href="GHC.Core.Map.html#tm_coerce"><span class="hs-identifier hs-var">tm_coerce</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeMapX a -&gt; Maybe a
forall a. TypeMapX a -&gt; Maybe a
</span><a href="GHC.Core.Map.html#tm_coerce"><span class="hs-identifier hs-var hs-var">tm_coerce</span></a></span><span> </span><span class="annot"><span class="annottext">TypeMapX a
</span><a href="#local-6989586621680855819"><span class="hs-identifier hs-var">m</span></a></span><span> </span><span class="annot"><span class="annottext">Maybe a -&gt; XT a -&gt; Maybe a
forall a b. a -&gt; (a -&gt; b) -&gt; b
</span><a href="GHC.Data.TrieMap.html#%7C%3E"><span class="hs-operator hs-var">|&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680855820"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-590"></span><span class="annot"><a href="GHC.Core.Map.html#xtT"><span class="hs-identifier hs-var">xtT</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-type">D</span></a></span><span> </span><span id="local-6989586621680855818"><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855818"><span class="hs-identifier hs-var">env</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#ForAllTy"><span class="hs-identifier hs-type">ForAllTy</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Var.html#Bndr"><span class="hs-identifier hs-type">Bndr</span></a></span><span> </span><span id="local-6989586621680855817"><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680855817"><span class="hs-identifier hs-var">tv</span></a></span></span><span> </span><span class="annot"><span class="annottext">ArgFlag
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621680855816"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855816"><span class="hs-identifier hs-var">ty</span></a></span></span><span class="hs-special">)</span><span class="hs-special">)</span><span>  </span><span id="local-6989586621680855815"><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680855815"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span id="local-6989586621680855814"><span class="annot"><span class="annottext">TypeMapX a
</span><a href="#local-6989586621680855814"><span class="hs-identifier hs-var">m</span></a></span></span><span>
</span><span id="line-591"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeMapX a
</span><a href="#local-6989586621680855814"><span class="hs-identifier hs-var">m</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">tm_forall :: TypeMapG (BndrMap a)
</span><a href="GHC.Core.Map.html#tm_forall"><span class="hs-identifier hs-var">tm_forall</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeMapX a -&gt; TypeMapG (BndrMap a)
forall a. TypeMapX a -&gt; TypeMapG (BndrMap a)
</span><a href="GHC.Core.Map.html#tm_forall"><span class="hs-identifier hs-var hs-var">tm_forall</span></a></span><span> </span><span class="annot"><span class="annottext">TypeMapX a
</span><a href="#local-6989586621680855814"><span class="hs-identifier hs-var">m</span></a></span><span> </span><span class="annot"><span class="annottext">TypeMapG (BndrMap a)
-&gt; (TypeMapG (BndrMap a) -&gt; TypeMapG (BndrMap a))
-&gt; TypeMapG (BndrMap a)
forall a b. a -&gt; (a -&gt; b) -&gt; b
</span><a href="GHC.Data.TrieMap.html#%7C%3E"><span class="hs-operator hs-var">|&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Key TypeMapX
-&gt; XT (BndrMap a) -&gt; TypeMapG (BndrMap a) -&gt; TypeMapG (BndrMap a)
forall (m :: * -&gt; *) a.
(Eq (Key m), TrieMap m) =&gt;
Key m -&gt; XT a -&gt; GenMap m a -&gt; GenMap m a
</span><a href="GHC.Data.TrieMap.html#xtG"><span class="hs-identifier hs-var">xtG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; Type -&gt; DeBruijn Type
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; Id -&gt; CmEnv
</span><a href="GHC.Core.Map.html#extendCME"><span class="hs-identifier hs-var">extendCME</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855818"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680855817"><span class="hs-identifier hs-var">tv</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855816"><span class="hs-identifier hs-var">ty</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-592"></span><span>                                </span><span class="annot"><span class="annottext">(XT (BndrMap a) -&gt; TypeMapG (BndrMap a) -&gt; TypeMapG (BndrMap a))
-&gt; (BndrMap a -&gt; BndrMap a)
-&gt; TypeMapG (BndrMap a)
-&gt; TypeMapG (BndrMap a)
forall (m2 :: * -&gt; *) a (m1 :: * -&gt; *).
TrieMap m2 =&gt;
(XT (m2 a) -&gt; m1 (m2 a) -&gt; m1 (m2 a))
-&gt; (m2 a -&gt; m2 a) -&gt; m1 (m2 a) -&gt; m1 (m2 a)
</span><a href="GHC.Data.TrieMap.html#%7C%3E%3E"><span class="hs-operator hs-var">|&gt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; Id -&gt; XT a -&gt; BndrMap a -&gt; BndrMap a
forall a. CmEnv -&gt; Id -&gt; XT a -&gt; BndrMap a -&gt; BndrMap a
</span><a href="GHC.Core.Map.html#xtBndr"><span class="hs-identifier hs-var">xtBndr</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855818"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680855817"><span class="hs-identifier hs-var">tv</span></a></span><span> </span><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680855815"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-593"></span><span class="annot"><a href="GHC.Core.Map.html#xtT"><span class="hs-identifier hs-var">xtT</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-type">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><span class="hs-identifier">_</span></span><span>   </span><span id="local-6989586621680855813"><span class="annot"><span class="annottext">ty :: Type
</span><a href="#local-6989586621680855813"><span class="hs-identifier hs-var">ty</span></a></span></span><span class="hs-glyph">@</span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#TyConApp"><span class="hs-identifier hs-type">TyConApp</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Type
</span><span class="hs-identifier">_</span></span><span class="annot"><span class="hs-glyph hs-type">:</span></span><span class="annot"><span class="annottext">[Type]
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">XT a
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">TypeMapX a
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc -&gt; TypeMapX a
forall a. HasCallStack =&gt; String -&gt; SDoc -&gt; a
</span><a href="GHC.Utils.Outputable.html#pprPanic"><span class="hs-identifier hs-var">pprPanic</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;xtT TyConApp&quot;</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Type -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855813"><span class="hs-identifier hs-var">ty</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-594"></span><span class="annot"><a href="GHC.Core.Map.html#xtT"><span class="hs-identifier hs-var">xtT</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-type">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><span class="hs-identifier">_</span></span><span>   </span><span id="local-6989586621680855812"><span class="annot"><span class="annottext">ty :: Type
</span><a href="#local-6989586621680855812"><span class="hs-identifier hs-var">ty</span></a></span></span><span class="hs-glyph">@</span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#FunTy"><span class="hs-identifier hs-type">FunTy</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span class="hs-special">)</span><span>         </span><span class="annot"><span class="annottext">XT a
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">TypeMapX a
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc -&gt; TypeMapX a
forall a. HasCallStack =&gt; String -&gt; SDoc -&gt; a
</span><a href="GHC.Utils.Outputable.html#pprPanic"><span class="hs-identifier hs-var">pprPanic</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;xtT FunTy&quot;</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Type -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855812"><span class="hs-identifier hs-var">ty</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-595"></span><span>
</span><span id="line-596"></span><span id="local-6989586621680855810"><span id="local-6989586621680855811"><span class="annot"><a href="GHC.Core.Map.html#fdT"><span class="hs-identifier hs-type">fdT</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621680855811"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680855810"><span class="hs-identifier hs-type">b</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680855810"><span class="hs-identifier hs-type">b</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#TypeMapX"><span class="hs-identifier hs-type">TypeMapX</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680855811"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680855810"><span class="hs-identifier hs-type">b</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680855810"><span class="hs-identifier hs-type">b</span></a></span></span></span><span>
</span><span id="line-597"></span><span id="fdT"><span class="annot"><span class="annottext">fdT :: forall a b. (a -&gt; b -&gt; b) -&gt; TypeMapX a -&gt; b -&gt; b
</span><a href="GHC.Core.Map.html#fdT"><span class="hs-identifier hs-var hs-var">fdT</span></a></span></span><span> </span><span id="local-6989586621680855799"><span class="annot"><span class="annottext">a -&gt; b -&gt; b
</span><a href="#local-6989586621680855799"><span class="hs-identifier hs-var">k</span></a></span></span><span> </span><span id="local-6989586621680855798"><span class="annot"><span class="annottext">TypeMapX a
</span><a href="#local-6989586621680855798"><span class="hs-identifier hs-var">m</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(a -&gt; b -&gt; b) -&gt; VarMap a -&gt; b -&gt; b
forall (m :: * -&gt; *) a b.
TrieMap m =&gt;
(a -&gt; b -&gt; b) -&gt; m a -&gt; b -&gt; b
</span><a href="GHC.Data.TrieMap.html#foldTM"><span class="hs-identifier hs-var">foldTM</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b -&gt; b
</span><a href="#local-6989586621680855799"><span class="hs-identifier hs-var">k</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TypeMapX a -&gt; VarMap a
forall a. TypeMapX a -&gt; VarMap a
</span><a href="GHC.Core.Map.html#tm_var"><span class="hs-identifier hs-var hs-var">tm_var</span></a></span><span> </span><span class="annot"><span class="annottext">TypeMapX a
</span><a href="#local-6989586621680855798"><span class="hs-identifier hs-var">m</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-598"></span><span>        </span><span class="annot"><span class="annottext">(b -&gt; b) -&gt; (b -&gt; b) -&gt; b -&gt; b
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">(GenMap TypeMapX a -&gt; b -&gt; b)
-&gt; GenMap TypeMapX (GenMap TypeMapX a) -&gt; b -&gt; b
forall (m :: * -&gt; *) a b.
TrieMap m =&gt;
(a -&gt; b -&gt; b) -&gt; m a -&gt; b -&gt; b
</span><a href="GHC.Data.TrieMap.html#foldTM"><span class="hs-identifier hs-var">foldTM</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(a -&gt; b -&gt; b) -&gt; GenMap TypeMapX a -&gt; b -&gt; b
forall (m :: * -&gt; *) a b.
TrieMap m =&gt;
(a -&gt; b -&gt; b) -&gt; m a -&gt; b -&gt; b
</span><a href="GHC.Data.TrieMap.html#foldTM"><span class="hs-identifier hs-var">foldTM</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b -&gt; b
</span><a href="#local-6989586621680855799"><span class="hs-identifier hs-var">k</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TypeMapX a -&gt; GenMap TypeMapX (GenMap TypeMapX a)
forall a. TypeMapX a -&gt; TypeMapG (TypeMapG a)
</span><a href="GHC.Core.Map.html#tm_app"><span class="hs-identifier hs-var hs-var">tm_app</span></a></span><span> </span><span class="annot"><span class="annottext">TypeMapX a
</span><a href="#local-6989586621680855798"><span class="hs-identifier hs-var">m</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-599"></span><span>        </span><span class="annot"><span class="annottext">(b -&gt; b) -&gt; (b -&gt; b) -&gt; b -&gt; b
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">(a -&gt; b -&gt; b) -&gt; UniqDFM Name a -&gt; b -&gt; b
forall (m :: * -&gt; *) a b.
TrieMap m =&gt;
(a -&gt; b -&gt; b) -&gt; m a -&gt; b -&gt; b
</span><a href="GHC.Data.TrieMap.html#foldTM"><span class="hs-identifier hs-var">foldTM</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b -&gt; b
</span><a href="#local-6989586621680855799"><span class="hs-identifier hs-var">k</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TypeMapX a -&gt; UniqDFM Name a
forall a. TypeMapX a -&gt; DNameEnv a
</span><a href="GHC.Core.Map.html#tm_tycon"><span class="hs-identifier hs-var hs-var">tm_tycon</span></a></span><span> </span><span class="annot"><span class="annottext">TypeMapX a
</span><a href="#local-6989586621680855798"><span class="hs-identifier hs-var">m</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-600"></span><span>        </span><span class="annot"><span class="annottext">(b -&gt; b) -&gt; (b -&gt; b) -&gt; b -&gt; b
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">(BndrMap a -&gt; b -&gt; b) -&gt; GenMap TypeMapX (BndrMap a) -&gt; b -&gt; b
forall (m :: * -&gt; *) a b.
TrieMap m =&gt;
(a -&gt; b -&gt; b) -&gt; m a -&gt; b -&gt; b
</span><a href="GHC.Data.TrieMap.html#foldTM"><span class="hs-identifier hs-var">foldTM</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(a -&gt; b -&gt; b) -&gt; BndrMap a -&gt; b -&gt; b
forall (m :: * -&gt; *) a b.
TrieMap m =&gt;
(a -&gt; b -&gt; b) -&gt; m a -&gt; b -&gt; b
</span><a href="GHC.Data.TrieMap.html#foldTM"><span class="hs-identifier hs-var">foldTM</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b -&gt; b
</span><a href="#local-6989586621680855799"><span class="hs-identifier hs-var">k</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TypeMapX a -&gt; GenMap TypeMapX (BndrMap a)
forall a. TypeMapX a -&gt; TypeMapG (BndrMap a)
</span><a href="GHC.Core.Map.html#tm_forall"><span class="hs-identifier hs-var hs-var">tm_forall</span></a></span><span> </span><span class="annot"><span class="annottext">TypeMapX a
</span><a href="#local-6989586621680855798"><span class="hs-identifier hs-var">m</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-601"></span><span>        </span><span class="annot"><span class="annottext">(b -&gt; b) -&gt; (b -&gt; b) -&gt; b -&gt; b
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">(a -&gt; b -&gt; b) -&gt; TyLitMap a -&gt; b -&gt; b
forall a b. (a -&gt; b -&gt; b) -&gt; TyLitMap a -&gt; b -&gt; b
</span><a href="GHC.Core.Map.html#foldTyLit"><span class="hs-identifier hs-var">foldTyLit</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b -&gt; b
</span><a href="#local-6989586621680855799"><span class="hs-identifier hs-var">k</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TypeMapX a -&gt; TyLitMap a
forall a. TypeMapX a -&gt; TyLitMap a
</span><a href="GHC.Core.Map.html#tm_tylit"><span class="hs-identifier hs-var hs-var">tm_tylit</span></a></span><span> </span><span class="annot"><span class="annottext">TypeMapX a
</span><a href="#local-6989586621680855798"><span class="hs-identifier hs-var">m</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-602"></span><span>        </span><span class="annot"><span class="annottext">(b -&gt; b) -&gt; (b -&gt; b) -&gt; b -&gt; b
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">(a -&gt; b -&gt; b) -&gt; Maybe a -&gt; b -&gt; b
forall a b. (a -&gt; b -&gt; b) -&gt; Maybe a -&gt; b -&gt; b
</span><a href="GHC.Data.TrieMap.html#foldMaybe"><span class="hs-identifier hs-var">foldMaybe</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b -&gt; b
</span><a href="#local-6989586621680855799"><span class="hs-identifier hs-var">k</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TypeMapX a -&gt; Maybe a
forall a. TypeMapX a -&gt; Maybe a
</span><a href="GHC.Core.Map.html#tm_coerce"><span class="hs-identifier hs-var hs-var">tm_coerce</span></a></span><span> </span><span class="annot"><span class="annottext">TypeMapX a
</span><a href="#local-6989586621680855798"><span class="hs-identifier hs-var">m</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-603"></span><span>
</span><span id="line-604"></span><span class="hs-comment">------------------------</span><span>
</span><span id="line-605"></span><span class="hs-keyword">data</span><span> </span><span id="TyLitMap"><span class="annot"><a href="GHC.Core.Map.html#TyLitMap"><span class="hs-identifier hs-var">TyLitMap</span></a></span></span><span> </span><span id="local-6989586621680857006"><span class="annot"><a href="#local-6989586621680857006"><span class="hs-identifier hs-type">a</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="TLM"><span class="annot"><a href="GHC.Core.Map.html#TLM"><span class="hs-identifier hs-var">TLM</span></a></span></span><span> </span><span class="hs-special">{</span><span> </span><span id="tlm_number"><span class="annot"><span class="annottext">forall a. TyLitMap a -&gt; Map Integer a
</span><a href="GHC.Core.Map.html#tlm_number"><span class="hs-identifier hs-var hs-var">tlm_number</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../containers/src/Data.Map.Internal.html#Map"><span class="hs-identifier hs-type">Map.Map</span></a></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Integer</span></span><span> </span><span class="annot"><a href="#local-6989586621680857006"><span class="hs-identifier hs-type">a</span></a></span><span>
</span><span id="line-606"></span><span>                      </span><span class="hs-special">,</span><span> </span><span id="tlm_string"><span class="annot"><span class="annottext">forall a. TyLitMap a -&gt; Map FastString a
</span><a href="GHC.Core.Map.html#tlm_string"><span class="hs-identifier hs-var hs-var">tlm_string</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../containers/src/Data.Map.Internal.html#Map"><span class="hs-identifier hs-type">Map.Map</span></a></span><span> </span><span class="annot"><a href="GHC.Data.FastString.html#FastString"><span class="hs-identifier hs-type">FastString</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857006"><span class="hs-identifier hs-type">a</span></a></span><span>
</span><span id="line-607"></span><span>                      </span><span class="hs-special">}</span><span>
</span><span id="line-608"></span><span>
</span><span id="line-609"></span><span class="hs-keyword">instance</span><span> </span><span class="annot"><a href="GHC.Data.TrieMap.html#TrieMap"><span class="hs-identifier hs-type">TrieMap</span></a></span><span> </span><span class="annot"><a href="GHC.Core.Map.html#TyLitMap"><span class="hs-identifier hs-type">TyLitMap</span></a></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-610"></span><span>   </span><span class="hs-keyword">type</span><span> </span><span id="Key"><span class="annot"><a href="GHC.Data.TrieMap.html#Key"><span class="hs-identifier hs-var">Key</span></a></span></span><span> </span><span class="annot"><a href="GHC.Core.Map.html#TyLitMap"><span class="hs-identifier hs-type">TyLitMap</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#TyLit"><span class="hs-identifier hs-type">TyLit</span></a></span><span>
</span><span id="line-611"></span><span>   </span><span id="local-6989586621680855787"><span class="annot"><span class="annottext">emptyTM :: forall a. TyLitMap a
</span><a href="#local-6989586621680855787"><span class="hs-identifier hs-var hs-var hs-var hs-var">emptyTM</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyLitMap a
forall a. TyLitMap a
</span><a href="GHC.Core.Map.html#emptyTyLitMap"><span class="hs-identifier hs-var">emptyTyLitMap</span></a></span><span>
</span><span id="line-612"></span><span>   </span><span id="local-6989586621680855786"><span class="annot"><span class="annottext">lookupTM :: forall b. Key TyLitMap -&gt; TyLitMap b -&gt; Maybe b
</span><a href="#local-6989586621680855786"><span class="hs-identifier hs-var hs-var hs-var hs-var">lookupTM</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Key TyLitMap -&gt; TyLitMap b -&gt; Maybe b
forall a. TyLit -&gt; TyLitMap a -&gt; Maybe a
</span><a href="GHC.Core.Map.html#lkTyLit"><span class="hs-identifier hs-var">lkTyLit</span></a></span><span>
</span><span id="line-613"></span><span>   </span><span id="local-6989586621680855785"><span class="annot"><span class="annottext">alterTM :: forall b. Key TyLitMap -&gt; XT b -&gt; TyLitMap b -&gt; TyLitMap b
</span><a href="#local-6989586621680855785"><span class="hs-identifier hs-var hs-var hs-var hs-var">alterTM</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Key TyLitMap -&gt; (Maybe b -&gt; Maybe b) -&gt; TyLitMap b -&gt; TyLitMap b
forall a. TyLit -&gt; XT a -&gt; TyLitMap a -&gt; TyLitMap a
</span><a href="GHC.Core.Map.html#xtTyLit"><span class="hs-identifier hs-var">xtTyLit</span></a></span><span>
</span><span id="line-614"></span><span>   </span><span id="local-6989586621680855784"><span class="annot"><span class="annottext">foldTM :: forall a b. (a -&gt; b -&gt; b) -&gt; TyLitMap a -&gt; b -&gt; b
</span><a href="#local-6989586621680855784"><span class="hs-identifier hs-var hs-var hs-var hs-var">foldTM</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(a -&gt; b -&gt; b) -&gt; TyLitMap a -&gt; b -&gt; b
forall a b. (a -&gt; b -&gt; b) -&gt; TyLitMap a -&gt; b -&gt; b
</span><a href="GHC.Core.Map.html#foldTyLit"><span class="hs-identifier hs-var">foldTyLit</span></a></span><span>
</span><span id="line-615"></span><span>   </span><span id="local-6989586621680855783"><span class="annot"><span class="annottext">mapTM :: forall a b. (a -&gt; b) -&gt; TyLitMap a -&gt; TyLitMap b
</span><a href="#local-6989586621680855783"><span class="hs-identifier hs-var hs-var hs-var hs-var">mapTM</span></a></span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(a -&gt; b) -&gt; TyLitMap a -&gt; TyLitMap b
forall a b. (a -&gt; b) -&gt; TyLitMap a -&gt; TyLitMap b
</span><a href="GHC.Core.Map.html#mapTyLit"><span class="hs-identifier hs-var">mapTyLit</span></a></span><span>
</span><span id="line-616"></span><span>
</span><span id="line-617"></span><span id="local-6989586621680857023"><span class="annot"><a href="GHC.Core.Map.html#emptyTyLitMap"><span class="hs-identifier hs-type">emptyTyLitMap</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#TyLitMap"><span class="hs-identifier hs-type">TyLitMap</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857023"><span class="hs-identifier hs-type">a</span></a></span></span><span>
</span><span id="line-618"></span><span id="emptyTyLitMap"><span class="annot"><span class="annottext">emptyTyLitMap :: forall a. TyLitMap a
</span><a href="GHC.Core.Map.html#emptyTyLitMap"><span class="hs-identifier hs-var hs-var">emptyTyLitMap</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TLM :: forall a. Map Integer a -&gt; Map FastString a -&gt; TyLitMap a
</span><a href="GHC.Core.Map.html#TLM"><span class="hs-identifier hs-type">TLM</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">tlm_number :: Map Integer a
</span><a href="GHC.Core.Map.html#tlm_number"><span class="hs-identifier hs-var">tlm_number</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Map Integer a
forall k a. Map k a
</span><a href="../../containers/src/Data.Map.Internal.html#empty"><span class="hs-identifier hs-var">Map.empty</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">tlm_string :: Map FastString a
</span><a href="GHC.Core.Map.html#tlm_string"><span class="hs-identifier hs-var">tlm_string</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Map FastString a
forall k a. Map k a
</span><a href="../../containers/src/Data.Map.Internal.html#empty"><span class="hs-identifier hs-var">Map.empty</span></a></span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-619"></span><span>
</span><span id="line-620"></span><span id="local-6989586621680855779"><span id="local-6989586621680855780"><span class="annot"><a href="GHC.Core.Map.html#mapTyLit"><span class="hs-identifier hs-type">mapTyLit</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621680855780"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-glyph">-&gt;</span><span class="annot"><a href="#local-6989586621680855779"><span class="hs-identifier hs-type">b</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#TyLitMap"><span class="hs-identifier hs-type">TyLitMap</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680855780"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#TyLitMap"><span class="hs-identifier hs-type">TyLitMap</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680855779"><span class="hs-identifier hs-type">b</span></a></span></span></span><span>
</span><span id="line-621"></span><span id="mapTyLit"><span class="annot"><span class="annottext">mapTyLit :: forall a b. (a -&gt; b) -&gt; TyLitMap a -&gt; TyLitMap b
</span><a href="GHC.Core.Map.html#mapTyLit"><span class="hs-identifier hs-var hs-var">mapTyLit</span></a></span></span><span> </span><span id="local-6989586621680855778"><span class="annot"><span class="annottext">a -&gt; b
</span><a href="#local-6989586621680855778"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#TLM"><span class="hs-identifier hs-type">TLM</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">tlm_number :: forall a. TyLitMap a -&gt; Map Integer a
</span><a href="GHC.Core.Map.html#tlm_number"><span class="hs-identifier hs-var">tlm_number</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680855777"><span class="annot"><span class="annottext">Map Integer a
</span><a href="#local-6989586621680855777"><span class="hs-identifier hs-var">tn</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">tlm_string :: forall a. TyLitMap a -&gt; Map FastString a
</span><a href="GHC.Core.Map.html#tlm_string"><span class="hs-identifier hs-var">tlm_string</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680855776"><span class="annot"><span class="annottext">Map FastString a
</span><a href="#local-6989586621680855776"><span class="hs-identifier hs-var">ts</span></a></span></span><span> </span><span class="hs-special">}</span><span class="hs-special">)</span><span>
</span><span id="line-622"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TLM :: forall a. Map Integer a -&gt; Map FastString a -&gt; TyLitMap a
</span><a href="GHC.Core.Map.html#TLM"><span class="hs-identifier hs-type">TLM</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">tlm_number :: Map Integer b
</span><a href="GHC.Core.Map.html#tlm_number"><span class="hs-identifier hs-var">tlm_number</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(a -&gt; b) -&gt; Map Integer a -&gt; Map Integer b
forall a b k. (a -&gt; b) -&gt; Map k a -&gt; Map k b
</span><a href="../../containers/src/Data.Map.Internal.html#map"><span class="hs-identifier hs-var">Map.map</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b
</span><a href="#local-6989586621680855778"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">Map Integer a
</span><a href="#local-6989586621680855777"><span class="hs-identifier hs-var">tn</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">tlm_string :: Map FastString b
</span><a href="GHC.Core.Map.html#tlm_string"><span class="hs-identifier hs-var">tlm_string</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(a -&gt; b) -&gt; Map FastString a -&gt; Map FastString b
forall a b k. (a -&gt; b) -&gt; Map k a -&gt; Map k b
</span><a href="../../containers/src/Data.Map.Internal.html#map"><span class="hs-identifier hs-var">Map.map</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b
</span><a href="#local-6989586621680855778"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">Map FastString a
</span><a href="#local-6989586621680855776"><span class="hs-identifier hs-var">ts</span></a></span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-623"></span><span>
</span><span id="line-624"></span><span id="local-6989586621680857015"><span class="annot"><a href="GHC.Core.Map.html#lkTyLit"><span class="hs-identifier hs-type">lkTyLit</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#TyLit"><span class="hs-identifier hs-type">TyLit</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#TyLitMap"><span class="hs-identifier hs-type">TyLitMap</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857015"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857015"><span class="hs-identifier hs-type">a</span></a></span></span><span>
</span><span id="line-625"></span><span id="lkTyLit"><span class="annot"><span class="annottext">lkTyLit :: forall a. TyLit -&gt; TyLitMap a -&gt; Maybe a
</span><a href="GHC.Core.Map.html#lkTyLit"><span class="hs-identifier hs-var hs-var">lkTyLit</span></a></span></span><span> </span><span id="local-6989586621680855770"><span class="annot"><span class="annottext">TyLit
</span><a href="#local-6989586621680855770"><span class="hs-identifier hs-var">l</span></a></span></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-626"></span><span>  </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">TyLit
</span><a href="#local-6989586621680855770"><span class="hs-identifier hs-var">l</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-627"></span><span>    </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#NumTyLit"><span class="hs-identifier hs-type">NumTyLit</span></a></span><span> </span><span id="local-6989586621680855768"><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621680855768"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">TyLitMap a -&gt; Map Integer a
forall a. TyLitMap a -&gt; Map Integer a
</span><a href="GHC.Core.Map.html#tlm_number"><span class="hs-identifier hs-var hs-var">tlm_number</span></a></span><span> </span><span class="annot"><span class="annottext">(TyLitMap a -&gt; Map Integer a)
-&gt; (Map Integer a -&gt; Maybe a) -&gt; TyLitMap a -&gt; Maybe a
forall a b c. (a -&gt; b) -&gt; (b -&gt; c) -&gt; a -&gt; c
</span><a href="GHC.Data.TrieMap.html#%3E.%3E"><span class="hs-operator hs-var">&gt;.&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Integer -&gt; Map Integer a -&gt; Maybe a
forall k a. Ord k =&gt; k -&gt; Map k a -&gt; Maybe a
</span><a href="../../containers/src/Data.Map.Internal.html#lookup"><span class="hs-identifier hs-var">Map.lookup</span></a></span><span> </span><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621680855768"><span class="hs-identifier hs-var">n</span></a></span><span>
</span><span id="line-628"></span><span>    </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#StrTyLit"><span class="hs-identifier hs-type">StrTyLit</span></a></span><span> </span><span id="local-6989586621680855765"><span class="annot"><span class="annottext">FastString
</span><a href="#local-6989586621680855765"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">TyLitMap a -&gt; Map FastString a
forall a. TyLitMap a -&gt; Map FastString a
</span><a href="GHC.Core.Map.html#tlm_string"><span class="hs-identifier hs-var hs-var">tlm_string</span></a></span><span> </span><span class="annot"><span class="annottext">(TyLitMap a -&gt; Map FastString a)
-&gt; (Map FastString a -&gt; Maybe a) -&gt; TyLitMap a -&gt; Maybe a
forall a b c. (a -&gt; b) -&gt; (b -&gt; c) -&gt; a -&gt; c
</span><a href="GHC.Data.TrieMap.html#%3E.%3E"><span class="hs-operator hs-var">&gt;.&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">FastString -&gt; Map FastString a -&gt; Maybe a
forall k a. Ord k =&gt; k -&gt; Map k a -&gt; Maybe a
</span><a href="../../containers/src/Data.Map.Internal.html#lookup"><span class="hs-identifier hs-var">Map.lookup</span></a></span><span> </span><span class="annot"><span class="annottext">FastString
</span><a href="#local-6989586621680855765"><span class="hs-identifier hs-var">n</span></a></span><span>
</span><span id="line-629"></span><span>
</span><span id="line-630"></span><span id="local-6989586621680857013"><span class="annot"><a href="GHC.Core.Map.html#xtTyLit"><span class="hs-identifier hs-type">xtTyLit</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#TyLit"><span class="hs-identifier hs-type">TyLit</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Data.TrieMap.html#XT"><span class="hs-identifier hs-type">XT</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857013"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#TyLitMap"><span class="hs-identifier hs-type">TyLitMap</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857013"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#TyLitMap"><span class="hs-identifier hs-type">TyLitMap</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857013"><span class="hs-identifier hs-type">a</span></a></span></span><span>
</span><span id="line-631"></span><span id="xtTyLit"><span class="annot"><span class="annottext">xtTyLit :: forall a. TyLit -&gt; XT a -&gt; TyLitMap a -&gt; TyLitMap a
</span><a href="GHC.Core.Map.html#xtTyLit"><span class="hs-identifier hs-var hs-var">xtTyLit</span></a></span></span><span> </span><span id="local-6989586621680855762"><span class="annot"><span class="annottext">TyLit
</span><a href="#local-6989586621680855762"><span class="hs-identifier hs-var">l</span></a></span></span><span> </span><span id="local-6989586621680855761"><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680855761"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span id="local-6989586621680855760"><span class="annot"><span class="annottext">TyLitMap a
</span><a href="#local-6989586621680855760"><span class="hs-identifier hs-var">m</span></a></span></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-632"></span><span>  </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">TyLit
</span><a href="#local-6989586621680855762"><span class="hs-identifier hs-var">l</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-633"></span><span>    </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#NumTyLit"><span class="hs-identifier hs-type">NumTyLit</span></a></span><span> </span><span id="local-6989586621680855759"><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621680855759"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">TyLitMap a
</span><a href="#local-6989586621680855760"><span class="hs-identifier hs-var">m</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">tlm_number :: Map Integer a
</span><a href="GHC.Core.Map.html#tlm_number"><span class="hs-identifier hs-var">tlm_number</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyLitMap a -&gt; Map Integer a
forall a. TyLitMap a -&gt; Map Integer a
</span><a href="GHC.Core.Map.html#tlm_number"><span class="hs-identifier hs-var hs-var">tlm_number</span></a></span><span> </span><span class="annot"><span class="annottext">TyLitMap a
</span><a href="#local-6989586621680855760"><span class="hs-identifier hs-var">m</span></a></span><span> </span><span class="annot"><span class="annottext">Map Integer a -&gt; (Map Integer a -&gt; Map Integer a) -&gt; Map Integer a
forall a b. a -&gt; (a -&gt; b) -&gt; b
</span><a href="GHC.Data.TrieMap.html#%7C%3E"><span class="hs-operator hs-var">|&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">XT a -&gt; Integer -&gt; Map Integer a -&gt; Map Integer a
forall k a.
Ord k =&gt;
(Maybe a -&gt; Maybe a) -&gt; k -&gt; Map k a -&gt; Map k a
</span><a href="../../containers/src/Data.Map.Internal.html#alter"><span class="hs-identifier hs-var">Map.alter</span></a></span><span> </span><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680855761"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621680855759"><span class="hs-identifier hs-var">n</span></a></span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-634"></span><span>    </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#StrTyLit"><span class="hs-identifier hs-type">StrTyLit</span></a></span><span> </span><span id="local-6989586621680855757"><span class="annot"><span class="annottext">FastString
</span><a href="#local-6989586621680855757"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">TyLitMap a
</span><a href="#local-6989586621680855760"><span class="hs-identifier hs-var">m</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">tlm_string :: Map FastString a
</span><a href="GHC.Core.Map.html#tlm_string"><span class="hs-identifier hs-var">tlm_string</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyLitMap a -&gt; Map FastString a
forall a. TyLitMap a -&gt; Map FastString a
</span><a href="GHC.Core.Map.html#tlm_string"><span class="hs-identifier hs-var hs-var">tlm_string</span></a></span><span> </span><span class="annot"><span class="annottext">TyLitMap a
</span><a href="#local-6989586621680855760"><span class="hs-identifier hs-var">m</span></a></span><span> </span><span class="annot"><span class="annottext">Map FastString a
-&gt; (Map FastString a -&gt; Map FastString a) -&gt; Map FastString a
forall a b. a -&gt; (a -&gt; b) -&gt; b
</span><a href="GHC.Data.TrieMap.html#%7C%3E"><span class="hs-operator hs-var">|&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">XT a -&gt; FastString -&gt; Map FastString a -&gt; Map FastString a
forall k a.
Ord k =&gt;
(Maybe a -&gt; Maybe a) -&gt; k -&gt; Map k a -&gt; Map k a
</span><a href="../../containers/src/Data.Map.Internal.html#alter"><span class="hs-identifier hs-var">Map.alter</span></a></span><span> </span><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680855761"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">FastString
</span><a href="#local-6989586621680855757"><span class="hs-identifier hs-var">n</span></a></span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-635"></span><span>
</span><span id="line-636"></span><span id="local-6989586621680857009"><span id="local-6989586621680857010"><span class="annot"><a href="GHC.Core.Map.html#foldTyLit"><span class="hs-identifier hs-type">foldTyLit</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621680857010"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680857009"><span class="hs-identifier hs-type">b</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680857009"><span class="hs-identifier hs-type">b</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#TyLitMap"><span class="hs-identifier hs-type">TyLitMap</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857010"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680857009"><span class="hs-identifier hs-type">b</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680857009"><span class="hs-identifier hs-type">b</span></a></span></span></span><span>
</span><span id="line-637"></span><span id="foldTyLit"><span class="annot"><span class="annottext">foldTyLit :: forall a b. (a -&gt; b -&gt; b) -&gt; TyLitMap a -&gt; b -&gt; b
</span><a href="GHC.Core.Map.html#foldTyLit"><span class="hs-identifier hs-var hs-var">foldTyLit</span></a></span></span><span> </span><span id="local-6989586621680855756"><span class="annot"><span class="annottext">a -&gt; b -&gt; b
</span><a href="#local-6989586621680855756"><span class="hs-identifier hs-var">l</span></a></span></span><span> </span><span id="local-6989586621680855755"><span class="annot"><span class="annottext">TyLitMap a
</span><a href="#local-6989586621680855755"><span class="hs-identifier hs-var">m</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(b -&gt; Map FastString a -&gt; b) -&gt; Map FastString a -&gt; b -&gt; b
forall a b c. (a -&gt; b -&gt; c) -&gt; b -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#flip"><span class="hs-identifier hs-var">flip</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(a -&gt; b -&gt; b) -&gt; b -&gt; Map FastString a -&gt; b
forall a b k. (a -&gt; b -&gt; b) -&gt; b -&gt; Map k a -&gt; b
</span><a href="../../containers/src/Data.Map.Internal.html#foldr"><span class="hs-identifier hs-var">Map.foldr</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b -&gt; b
</span><a href="#local-6989586621680855756"><span class="hs-identifier hs-var">l</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TyLitMap a -&gt; Map FastString a
forall a. TyLitMap a -&gt; Map FastString a
</span><a href="GHC.Core.Map.html#tlm_string"><span class="hs-identifier hs-var hs-var">tlm_string</span></a></span><span> </span><span class="annot"><span class="annottext">TyLitMap a
</span><a href="#local-6989586621680855755"><span class="hs-identifier hs-var">m</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-638"></span><span>              </span><span class="annot"><span class="annottext">(b -&gt; b) -&gt; (b -&gt; b) -&gt; b -&gt; b
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">(b -&gt; Map Integer a -&gt; b) -&gt; Map Integer a -&gt; b -&gt; b
forall a b c. (a -&gt; b -&gt; c) -&gt; b -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#flip"><span class="hs-identifier hs-var">flip</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(a -&gt; b -&gt; b) -&gt; b -&gt; Map Integer a -&gt; b
forall a b k. (a -&gt; b -&gt; b) -&gt; b -&gt; Map k a -&gt; b
</span><a href="../../containers/src/Data.Map.Internal.html#foldr"><span class="hs-identifier hs-var">Map.foldr</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b -&gt; b
</span><a href="#local-6989586621680855756"><span class="hs-identifier hs-var">l</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TyLitMap a -&gt; Map Integer a
forall a. TyLitMap a -&gt; Map Integer a
</span><a href="GHC.Core.Map.html#tlm_number"><span class="hs-identifier hs-var hs-var">tlm_number</span></a></span><span> </span><span class="annot"><span class="annottext">TyLitMap a
</span><a href="#local-6989586621680855755"><span class="hs-identifier hs-var">m</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-639"></span><span>
</span><span id="line-640"></span><span class="hs-comment">-------------------------------------------------</span><span>
</span><span id="line-641"></span><span class="hs-comment">-- | @TypeMap a@ is a map from 'Type' to @a@.  If you are a client, this</span><span>
</span><span id="line-642"></span><span class="hs-comment">-- is the type you want. The keys in this map may have different kinds.</span><span>
</span><span id="line-643"></span><span class="hs-keyword">newtype</span><span> </span><span id="TypeMap"><span class="annot"><a href="GHC.Core.Map.html#TypeMap"><span class="hs-identifier hs-var">TypeMap</span></a></span></span><span> </span><span id="local-6989586621680856965"><span class="annot"><a href="#local-6989586621680856965"><span class="hs-identifier hs-type">a</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="TypeMap"><span class="annot"><a href="GHC.Core.Map.html#TypeMap"><span class="hs-identifier hs-var">TypeMap</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#TypeMapG"><span class="hs-identifier hs-type">TypeMapG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#TypeMapG"><span class="hs-identifier hs-type">TypeMapG</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680856965"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-644"></span><span>
</span><span id="line-645"></span><span id="local-6989586621680856973"><span class="annot"><a href="GHC.Core.Map.html#lkTT"><span class="hs-identifier hs-type">lkTT</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#DeBruijn"><span class="hs-identifier hs-type">DeBruijn</span></a></span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#TypeMap"><span class="hs-identifier hs-type">TypeMap</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680856973"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680856973"><span class="hs-identifier hs-type">a</span></a></span></span><span>
</span><span id="line-646"></span><span id="lkTT"><span class="annot"><span class="annottext">lkTT :: forall a. DeBruijn Type -&gt; TypeMap a -&gt; Maybe a
</span><a href="GHC.Core.Map.html#lkTT"><span class="hs-identifier hs-var hs-var">lkTT</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-type">D</span></a></span><span> </span><span id="local-6989586621680855743"><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855743"><span class="hs-identifier hs-var">env</span></a></span></span><span> </span><span id="local-6989586621680855742"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855742"><span class="hs-identifier hs-var">ty</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#TypeMap"><span class="hs-identifier hs-type">TypeMap</span></a></span><span> </span><span id="local-6989586621680855741"><span class="annot"><span class="annottext">TypeMapG (TypeMapG a)
</span><a href="#local-6989586621680855741"><span class="hs-identifier hs-var">m</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Key TypeMapX -&gt; TypeMapG (TypeMapG a) -&gt; Maybe (TypeMapG a)
forall (m :: * -&gt; *) a.
(Eq (Key m), TrieMap m) =&gt;
Key m -&gt; GenMap m a -&gt; Maybe a
</span><a href="GHC.Data.TrieMap.html#lkG"><span class="hs-identifier hs-var">lkG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; Type -&gt; DeBruijn Type
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855743"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">(Type -&gt; DeBruijn Type) -&gt; Type -&gt; DeBruijn Type
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">HasDebugCallStack =&gt; Type -&gt; Type
Type -&gt; Type
</span><a href="GHC.Core.Type.html#typeKind"><span class="hs-identifier hs-var">typeKind</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855742"><span class="hs-identifier hs-var">ty</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">TypeMapG (TypeMapG a)
</span><a href="#local-6989586621680855741"><span class="hs-identifier hs-var">m</span></a></span><span>
</span><span id="line-647"></span><span>                          </span><span class="annot"><span class="annottext">Maybe (TypeMapG a) -&gt; (TypeMapG a -&gt; Maybe a) -&gt; Maybe a
forall (m :: * -&gt; *) a b. Monad m =&gt; m a -&gt; (a -&gt; m b) -&gt; m b
</span><a href="../../base/src/GHC.Base.html#%3E%3E%3D"><span class="hs-operator hs-var">&gt;&gt;=</span></a></span><span> </span><span class="annot"><span class="annottext">Key TypeMapX -&gt; TypeMapG a -&gt; Maybe a
forall (m :: * -&gt; *) a.
(Eq (Key m), TrieMap m) =&gt;
Key m -&gt; GenMap m a -&gt; Maybe a
</span><a href="GHC.Data.TrieMap.html#lkG"><span class="hs-identifier hs-var">lkG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; Type -&gt; DeBruijn Type
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855743"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855742"><span class="hs-identifier hs-var">ty</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-648"></span><span>
</span><span id="line-649"></span><span id="local-6989586621680856967"><span class="annot"><a href="GHC.Core.Map.html#xtTT"><span class="hs-identifier hs-type">xtTT</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#DeBruijn"><span class="hs-identifier hs-type">DeBruijn</span></a></span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Data.TrieMap.html#XT"><span class="hs-identifier hs-type">XT</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680856967"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#TypeMap"><span class="hs-identifier hs-type">TypeMap</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680856967"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#TypeMap"><span class="hs-identifier hs-type">TypeMap</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680856967"><span class="hs-identifier hs-type">a</span></a></span></span><span>
</span><span id="line-650"></span><span id="xtTT"><span class="annot"><span class="annottext">xtTT :: forall a. DeBruijn Type -&gt; XT a -&gt; TypeMap a -&gt; TypeMap a
</span><a href="GHC.Core.Map.html#xtTT"><span class="hs-identifier hs-var hs-var">xtTT</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-type">D</span></a></span><span> </span><span id="local-6989586621680855729"><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855729"><span class="hs-identifier hs-var">env</span></a></span></span><span> </span><span id="local-6989586621680855728"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855728"><span class="hs-identifier hs-var">ty</span></a></span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621680855727"><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680855727"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#TypeMap"><span class="hs-identifier hs-type">TypeMap</span></a></span><span> </span><span id="local-6989586621680855726"><span class="annot"><span class="annottext">TypeMapG (TypeMapG a)
</span><a href="#local-6989586621680855726"><span class="hs-identifier hs-var">m</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-651"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeMapG (TypeMapG a) -&gt; TypeMap a
forall a. TypeMapG (TypeMapG a) -&gt; TypeMap a
</span><a href="GHC.Core.Map.html#TypeMap"><span class="hs-identifier hs-var">TypeMap</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TypeMapG (TypeMapG a)
</span><a href="#local-6989586621680855726"><span class="hs-identifier hs-var">m</span></a></span><span> </span><span class="annot"><span class="annottext">TypeMapG (TypeMapG a)
-&gt; (TypeMapG (TypeMapG a) -&gt; TypeMapG (TypeMapG a))
-&gt; TypeMapG (TypeMapG a)
forall a b. a -&gt; (a -&gt; b) -&gt; b
</span><a href="GHC.Data.TrieMap.html#%7C%3E"><span class="hs-operator hs-var">|&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Key TypeMapX
-&gt; XT (TypeMapG a)
-&gt; TypeMapG (TypeMapG a)
-&gt; TypeMapG (TypeMapG a)
forall (m :: * -&gt; *) a.
(Eq (Key m), TrieMap m) =&gt;
Key m -&gt; XT a -&gt; GenMap m a -&gt; GenMap m a
</span><a href="GHC.Data.TrieMap.html#xtG"><span class="hs-identifier hs-var">xtG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; Type -&gt; DeBruijn Type
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855729"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">(Type -&gt; DeBruijn Type) -&gt; Type -&gt; DeBruijn Type
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">HasDebugCallStack =&gt; Type -&gt; Type
Type -&gt; Type
</span><a href="GHC.Core.Type.html#typeKind"><span class="hs-identifier hs-var">typeKind</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855728"><span class="hs-identifier hs-var">ty</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-652"></span><span>               </span><span class="annot"><span class="annottext">(XT (TypeMapG a) -&gt; TypeMapG (TypeMapG a) -&gt; TypeMapG (TypeMapG a))
-&gt; (TypeMapG a -&gt; TypeMapG a)
-&gt; TypeMapG (TypeMapG a)
-&gt; TypeMapG (TypeMapG a)
forall (m2 :: * -&gt; *) a (m1 :: * -&gt; *).
TrieMap m2 =&gt;
(XT (m2 a) -&gt; m1 (m2 a) -&gt; m1 (m2 a))
-&gt; (m2 a -&gt; m2 a) -&gt; m1 (m2 a) -&gt; m1 (m2 a)
</span><a href="GHC.Data.TrieMap.html#%7C%3E%3E"><span class="hs-operator hs-var">|&gt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Key TypeMapX -&gt; XT a -&gt; TypeMapG a -&gt; TypeMapG a
forall (m :: * -&gt; *) a.
(Eq (Key m), TrieMap m) =&gt;
Key m -&gt; XT a -&gt; GenMap m a -&gt; GenMap m a
</span><a href="GHC.Data.TrieMap.html#xtG"><span class="hs-identifier hs-var">xtG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; Type -&gt; DeBruijn Type
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855729"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855728"><span class="hs-identifier hs-var">ty</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680855727"><span class="hs-identifier hs-var">f</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-653"></span><span>
</span><span id="line-654"></span><span class="hs-comment">-- Below are some client-oriented functions which operate on 'TypeMap'.</span><span>
</span><span id="line-655"></span><span>
</span><span id="line-656"></span><span class="hs-keyword">instance</span><span> </span><span class="annot"><a href="GHC.Data.TrieMap.html#TrieMap"><span class="hs-identifier hs-type">TrieMap</span></a></span><span> </span><span class="annot"><a href="GHC.Core.Map.html#TypeMap"><span class="hs-identifier hs-type">TypeMap</span></a></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-657"></span><span>    </span><span class="hs-keyword">type</span><span> </span><span id="Key"><span class="annot"><a href="GHC.Data.TrieMap.html#Key"><span class="hs-identifier hs-var">Key</span></a></span></span><span> </span><span class="annot"><a href="GHC.Core.Map.html#TypeMap"><span class="hs-identifier hs-type">TypeMap</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-658"></span><span>    </span><span id="local-6989586621680855715"><span class="annot"><span class="annottext">emptyTM :: forall a. TypeMap a
</span><a href="#local-6989586621680855715"><span class="hs-identifier hs-var hs-var hs-var hs-var">emptyTM</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeMapG (TypeMapG a) -&gt; TypeMap a
forall a. TypeMapG (TypeMapG a) -&gt; TypeMap a
</span><a href="GHC.Core.Map.html#TypeMap"><span class="hs-identifier hs-var">TypeMap</span></a></span><span> </span><span class="annot"><span class="annottext">TypeMapG (TypeMapG a)
forall (m :: * -&gt; *) a. TrieMap m =&gt; m a
</span><a href="GHC.Data.TrieMap.html#emptyTM"><span class="hs-identifier hs-var">emptyTM</span></a></span><span>
</span><span id="line-659"></span><span>    </span><span id="local-6989586621680855714"><span class="annot"><span class="annottext">lookupTM :: forall b. Key TypeMap -&gt; TypeMap b -&gt; Maybe b
</span><a href="#local-6989586621680855714"><span class="hs-identifier hs-var hs-var hs-var hs-var">lookupTM</span></a></span></span><span> </span><span id="local-6989586621680855713"><span class="annot"><span class="annottext">Key TypeMap
</span><a href="#local-6989586621680855713"><span class="hs-identifier hs-var">k</span></a></span></span><span> </span><span id="local-6989586621680855712"><span class="annot"><span class="annottext">TypeMap b
</span><a href="#local-6989586621680855712"><span class="hs-identifier hs-var">m</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DeBruijn Type -&gt; TypeMap b -&gt; Maybe b
forall a. DeBruijn Type -&gt; TypeMap a -&gt; Maybe a
</span><a href="GHC.Core.Map.html#lkTT"><span class="hs-identifier hs-var">lkTT</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Type -&gt; DeBruijn Type
forall a. a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#deBruijnize"><span class="hs-identifier hs-var">deBruijnize</span></a></span><span> </span><span class="annot"><span class="annottext">Type
Key TypeMap
</span><a href="#local-6989586621680855713"><span class="hs-identifier hs-var">k</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">TypeMap b
</span><a href="#local-6989586621680855712"><span class="hs-identifier hs-var">m</span></a></span><span>
</span><span id="line-660"></span><span>    </span><span id="local-6989586621680855711"><span class="annot"><span class="annottext">alterTM :: forall b. Key TypeMap -&gt; XT b -&gt; TypeMap b -&gt; TypeMap b
</span><a href="#local-6989586621680855711"><span class="hs-identifier hs-var hs-var hs-var hs-var">alterTM</span></a></span></span><span> </span><span id="local-6989586621680855710"><span class="annot"><span class="annottext">Key TypeMap
</span><a href="#local-6989586621680855710"><span class="hs-identifier hs-var">k</span></a></span></span><span> </span><span id="local-6989586621680855709"><span class="annot"><span class="annottext">XT b
</span><a href="#local-6989586621680855709"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span id="local-6989586621680855708"><span class="annot"><span class="annottext">TypeMap b
</span><a href="#local-6989586621680855708"><span class="hs-identifier hs-var">m</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DeBruijn Type -&gt; XT b -&gt; TypeMap b -&gt; TypeMap b
forall a. DeBruijn Type -&gt; XT a -&gt; TypeMap a -&gt; TypeMap a
</span><a href="GHC.Core.Map.html#xtTT"><span class="hs-identifier hs-var">xtTT</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Type -&gt; DeBruijn Type
forall a. a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#deBruijnize"><span class="hs-identifier hs-var">deBruijnize</span></a></span><span> </span><span class="annot"><span class="annottext">Type
Key TypeMap
</span><a href="#local-6989586621680855710"><span class="hs-identifier hs-var">k</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">XT b
</span><a href="#local-6989586621680855709"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">TypeMap b
</span><a href="#local-6989586621680855708"><span class="hs-identifier hs-var">m</span></a></span><span>
</span><span id="line-661"></span><span>    </span><span id="local-6989586621680855702"><span class="annot"><span class="annottext">foldTM :: forall a b. (a -&gt; b -&gt; b) -&gt; TypeMap a -&gt; b -&gt; b
</span><a href="#local-6989586621680855702"><span class="hs-identifier hs-var hs-var hs-var hs-var">foldTM</span></a></span></span><span> </span><span id="local-6989586621680855701"><span class="annot"><span class="annottext">a -&gt; b -&gt; b
</span><a href="#local-6989586621680855701"><span class="hs-identifier hs-var">k</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#TypeMap"><span class="hs-identifier hs-type">TypeMap</span></a></span><span> </span><span id="local-6989586621680855700"><span class="annot"><span class="annottext">TypeMapG (TypeMapG a)
</span><a href="#local-6989586621680855700"><span class="hs-identifier hs-var">m</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(TypeMapG a -&gt; b -&gt; b) -&gt; TypeMapG (TypeMapG a) -&gt; b -&gt; b
forall (m :: * -&gt; *) a b.
TrieMap m =&gt;
(a -&gt; b -&gt; b) -&gt; m a -&gt; b -&gt; b
</span><a href="GHC.Data.TrieMap.html#foldTM"><span class="hs-identifier hs-var">foldTM</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(a -&gt; b -&gt; b) -&gt; TypeMapG a -&gt; b -&gt; b
forall (m :: * -&gt; *) a b.
TrieMap m =&gt;
(a -&gt; b -&gt; b) -&gt; m a -&gt; b -&gt; b
</span><a href="GHC.Data.TrieMap.html#foldTM"><span class="hs-identifier hs-var">foldTM</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b -&gt; b
</span><a href="#local-6989586621680855701"><span class="hs-identifier hs-var">k</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">TypeMapG (TypeMapG a)
</span><a href="#local-6989586621680855700"><span class="hs-identifier hs-var">m</span></a></span><span>
</span><span id="line-662"></span><span>    </span><span id="local-6989586621680855694"><span class="annot"><span class="annottext">mapTM :: forall a b. (a -&gt; b) -&gt; TypeMap a -&gt; TypeMap b
</span><a href="#local-6989586621680855694"><span class="hs-identifier hs-var hs-var hs-var hs-var">mapTM</span></a></span></span><span> </span><span id="local-6989586621680855693"><span class="annot"><span class="annottext">a -&gt; b
</span><a href="#local-6989586621680855693"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#TypeMap"><span class="hs-identifier hs-type">TypeMap</span></a></span><span> </span><span id="local-6989586621680855692"><span class="annot"><span class="annottext">TypeMapG (TypeMapG a)
</span><a href="#local-6989586621680855692"><span class="hs-identifier hs-var">m</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeMapG (TypeMapG b) -&gt; TypeMap b
forall a. TypeMapG (TypeMapG a) -&gt; TypeMap a
</span><a href="GHC.Core.Map.html#TypeMap"><span class="hs-identifier hs-var">TypeMap</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(TypeMapG a -&gt; TypeMapG b)
-&gt; TypeMapG (TypeMapG a) -&gt; TypeMapG (TypeMapG b)
forall (m :: * -&gt; *) a b. TrieMap m =&gt; (a -&gt; b) -&gt; m a -&gt; m b
</span><a href="GHC.Data.TrieMap.html#mapTM"><span class="hs-identifier hs-var">mapTM</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(a -&gt; b) -&gt; TypeMapG a -&gt; TypeMapG b
forall (m :: * -&gt; *) a b. TrieMap m =&gt; (a -&gt; b) -&gt; m a -&gt; m b
</span><a href="GHC.Data.TrieMap.html#mapTM"><span class="hs-identifier hs-var">mapTM</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b
</span><a href="#local-6989586621680855693"><span class="hs-identifier hs-var">f</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">TypeMapG (TypeMapG a)
</span><a href="#local-6989586621680855692"><span class="hs-identifier hs-var">m</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-663"></span><span>
</span><span id="line-664"></span><span id="local-6989586621680856956"><span id="local-6989586621680856957"><span class="annot"><a href="GHC.Core.Map.html#foldTypeMap"><span class="hs-identifier hs-type">foldTypeMap</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621680856957"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680856956"><span class="hs-identifier hs-type">b</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680856956"><span class="hs-identifier hs-type">b</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680856956"><span class="hs-identifier hs-type">b</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#TypeMap"><span class="hs-identifier hs-type">TypeMap</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680856957"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680856956"><span class="hs-identifier hs-type">b</span></a></span></span></span><span>
</span><span id="line-665"></span><span id="foldTypeMap"><span class="annot"><span class="annottext">foldTypeMap :: forall a b. (a -&gt; b -&gt; b) -&gt; b -&gt; TypeMap a -&gt; b
</span><a href="GHC.Core.Map.html#foldTypeMap"><span class="hs-identifier hs-var hs-var">foldTypeMap</span></a></span></span><span> </span><span id="local-6989586621680855690"><span class="annot"><span class="annottext">a -&gt; b -&gt; b
</span><a href="#local-6989586621680855690"><span class="hs-identifier hs-var">k</span></a></span></span><span> </span><span id="local-6989586621680855689"><span class="annot"><span class="annottext">b
</span><a href="#local-6989586621680855689"><span class="hs-identifier hs-var">z</span></a></span></span><span> </span><span id="local-6989586621680855688"><span class="annot"><span class="annottext">TypeMap a
</span><a href="#local-6989586621680855688"><span class="hs-identifier hs-var">m</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(a -&gt; b -&gt; b) -&gt; TypeMap a -&gt; b -&gt; b
forall (m :: * -&gt; *) a b.
TrieMap m =&gt;
(a -&gt; b -&gt; b) -&gt; m a -&gt; b -&gt; b
</span><a href="GHC.Data.TrieMap.html#foldTM"><span class="hs-identifier hs-var">foldTM</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b -&gt; b
</span><a href="#local-6989586621680855690"><span class="hs-identifier hs-var">k</span></a></span><span> </span><span class="annot"><span class="annottext">TypeMap a
</span><a href="#local-6989586621680855688"><span class="hs-identifier hs-var">m</span></a></span><span> </span><span class="annot"><span class="annottext">b
</span><a href="#local-6989586621680855689"><span class="hs-identifier hs-var">z</span></a></span><span>
</span><span id="line-666"></span><span>
</span><span id="line-667"></span><span id="local-6989586621680855687"><span class="annot"><a href="GHC.Core.Map.html#emptyTypeMap"><span class="hs-identifier hs-type">emptyTypeMap</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#TypeMap"><span class="hs-identifier hs-type">TypeMap</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680855687"><span class="hs-identifier hs-type">a</span></a></span></span><span>
</span><span id="line-668"></span><span id="emptyTypeMap"><span class="annot"><span class="annottext">emptyTypeMap :: forall a. TypeMap a
</span><a href="GHC.Core.Map.html#emptyTypeMap"><span class="hs-identifier hs-var hs-var">emptyTypeMap</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeMap a
forall (m :: * -&gt; *) a. TrieMap m =&gt; m a
</span><a href="GHC.Data.TrieMap.html#emptyTM"><span class="hs-identifier hs-var">emptyTM</span></a></span><span>
</span><span id="line-669"></span><span>
</span><span id="line-670"></span><span id="local-6989586621680856952"><span class="annot"><a href="GHC.Core.Map.html#lookupTypeMap"><span class="hs-identifier hs-type">lookupTypeMap</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#TypeMap"><span class="hs-identifier hs-type">TypeMap</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680856952"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680856952"><span class="hs-identifier hs-type">a</span></a></span></span><span>
</span><span id="line-671"></span><span id="lookupTypeMap"><span class="annot"><span class="annottext">lookupTypeMap :: forall a. TypeMap a -&gt; Type -&gt; Maybe a
</span><a href="GHC.Core.Map.html#lookupTypeMap"><span class="hs-identifier hs-var hs-var">lookupTypeMap</span></a></span></span><span> </span><span id="local-6989586621680855684"><span class="annot"><span class="annottext">TypeMap a
</span><a href="#local-6989586621680855684"><span class="hs-identifier hs-var">cm</span></a></span></span><span> </span><span id="local-6989586621680855683"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855683"><span class="hs-identifier hs-var">t</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Key TypeMap -&gt; TypeMap a -&gt; Maybe a
forall (m :: * -&gt; *) b. TrieMap m =&gt; Key m -&gt; m b -&gt; Maybe b
</span><a href="GHC.Data.TrieMap.html#lookupTM"><span class="hs-identifier hs-var">lookupTM</span></a></span><span> </span><span class="annot"><span class="annottext">Type
Key TypeMap
</span><a href="#local-6989586621680855683"><span class="hs-identifier hs-var">t</span></a></span><span> </span><span class="annot"><span class="annottext">TypeMap a
</span><a href="#local-6989586621680855684"><span class="hs-identifier hs-var">cm</span></a></span><span>
</span><span id="line-672"></span><span>
</span><span id="line-673"></span><span id="local-6989586621680856950"><span class="annot"><a href="GHC.Core.Map.html#extendTypeMap"><span class="hs-identifier hs-type">extendTypeMap</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#TypeMap"><span class="hs-identifier hs-type">TypeMap</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680856950"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680856950"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#TypeMap"><span class="hs-identifier hs-type">TypeMap</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680856950"><span class="hs-identifier hs-type">a</span></a></span></span><span>
</span><span id="line-674"></span><span id="extendTypeMap"><span class="annot"><span class="annottext">extendTypeMap :: forall a. TypeMap a -&gt; Type -&gt; a -&gt; TypeMap a
</span><a href="GHC.Core.Map.html#extendTypeMap"><span class="hs-identifier hs-var hs-var">extendTypeMap</span></a></span></span><span> </span><span id="local-6989586621680855681"><span class="annot"><span class="annottext">TypeMap a
</span><a href="#local-6989586621680855681"><span class="hs-identifier hs-var">m</span></a></span></span><span> </span><span id="local-6989586621680855680"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855680"><span class="hs-identifier hs-var">t</span></a></span></span><span> </span><span id="local-6989586621680855679"><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621680855679"><span class="hs-identifier hs-var">v</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Key TypeMap -&gt; XT a -&gt; TypeMap a -&gt; TypeMap a
forall (m :: * -&gt; *) b. TrieMap m =&gt; Key m -&gt; XT b -&gt; m b -&gt; m b
</span><a href="GHC.Data.TrieMap.html#alterTM"><span class="hs-identifier hs-var">alterTM</span></a></span><span> </span><span class="annot"><span class="annottext">Type
Key TypeMap
</span><a href="#local-6989586621680855680"><span class="hs-identifier hs-var">t</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Maybe a -&gt; XT a
forall a b. a -&gt; b -&gt; a
</span><a href="../../base/src/GHC.Base.html#const"><span class="hs-identifier hs-var">const</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">a -&gt; Maybe a
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621680855679"><span class="hs-identifier hs-var">v</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">TypeMap a
</span><a href="#local-6989586621680855681"><span class="hs-identifier hs-var">m</span></a></span><span>
</span><span id="line-675"></span><span>
</span><span id="line-676"></span><span id="local-6989586621680856946"><span class="annot"><a href="GHC.Core.Map.html#lookupTypeMapWithScope"><span class="hs-identifier hs-type">lookupTypeMapWithScope</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#TypeMap"><span class="hs-identifier hs-type">TypeMap</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680856946"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CmEnv"><span class="hs-identifier hs-type">CmEnv</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680856946"><span class="hs-identifier hs-type">a</span></a></span></span><span>
</span><span id="line-677"></span><span id="lookupTypeMapWithScope"><span class="annot"><span class="annottext">lookupTypeMapWithScope :: forall a. TypeMap a -&gt; CmEnv -&gt; Type -&gt; Maybe a
</span><a href="GHC.Core.Map.html#lookupTypeMapWithScope"><span class="hs-identifier hs-var hs-var">lookupTypeMapWithScope</span></a></span></span><span> </span><span id="local-6989586621680855677"><span class="annot"><span class="annottext">TypeMap a
</span><a href="#local-6989586621680855677"><span class="hs-identifier hs-var">m</span></a></span></span><span> </span><span id="local-6989586621680855676"><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855676"><span class="hs-identifier hs-var">cm</span></a></span></span><span> </span><span id="local-6989586621680855675"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855675"><span class="hs-identifier hs-var">t</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DeBruijn Type -&gt; TypeMap a -&gt; Maybe a
forall a. DeBruijn Type -&gt; TypeMap a -&gt; Maybe a
</span><a href="GHC.Core.Map.html#lkTT"><span class="hs-identifier hs-var">lkTT</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; Type -&gt; DeBruijn Type
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855676"><span class="hs-identifier hs-var">cm</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855675"><span class="hs-identifier hs-var">t</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">TypeMap a
</span><a href="#local-6989586621680855677"><span class="hs-identifier hs-var">m</span></a></span><span>
</span><span id="line-678"></span><span>
</span><span id="line-679"></span><span class="hs-comment">-- | Extend a 'TypeMap' with a type in the given context.</span><span>
</span><span id="line-680"></span><span class="hs-comment">-- @extendTypeMapWithScope m (mkDeBruijnContext [a,b,c]) t v@ is equivalent to</span><span>
</span><span id="line-681"></span><span class="hs-comment">-- @extendTypeMap m (forall a b c. t) v@, but allows reuse of the context over</span><span>
</span><span id="line-682"></span><span class="hs-comment">-- multiple insertions.</span><span>
</span><span id="line-683"></span><span id="local-6989586621680856944"><span class="annot"><a href="GHC.Core.Map.html#extendTypeMapWithScope"><span class="hs-identifier hs-type">extendTypeMapWithScope</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#TypeMap"><span class="hs-identifier hs-type">TypeMap</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680856944"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CmEnv"><span class="hs-identifier hs-type">CmEnv</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680856944"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#TypeMap"><span class="hs-identifier hs-type">TypeMap</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680856944"><span class="hs-identifier hs-type">a</span></a></span></span><span>
</span><span id="line-684"></span><span id="extendTypeMapWithScope"><span class="annot"><span class="annottext">extendTypeMapWithScope :: forall a. TypeMap a -&gt; CmEnv -&gt; Type -&gt; a -&gt; TypeMap a
</span><a href="GHC.Core.Map.html#extendTypeMapWithScope"><span class="hs-identifier hs-var hs-var">extendTypeMapWithScope</span></a></span></span><span> </span><span id="local-6989586621680855674"><span class="annot"><span class="annottext">TypeMap a
</span><a href="#local-6989586621680855674"><span class="hs-identifier hs-var">m</span></a></span></span><span> </span><span id="local-6989586621680855673"><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855673"><span class="hs-identifier hs-var">cm</span></a></span></span><span> </span><span id="local-6989586621680855672"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855672"><span class="hs-identifier hs-var">t</span></a></span></span><span> </span><span id="local-6989586621680855671"><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621680855671"><span class="hs-identifier hs-var">v</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DeBruijn Type -&gt; XT a -&gt; TypeMap a -&gt; TypeMap a
forall a. DeBruijn Type -&gt; XT a -&gt; TypeMap a -&gt; TypeMap a
</span><a href="GHC.Core.Map.html#xtTT"><span class="hs-identifier hs-var">xtTT</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; Type -&gt; DeBruijn Type
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855673"><span class="hs-identifier hs-var">cm</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680855672"><span class="hs-identifier hs-var">t</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Maybe a -&gt; XT a
forall a b. a -&gt; b -&gt; a
</span><a href="../../base/src/GHC.Base.html#const"><span class="hs-identifier hs-var">const</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">a -&gt; Maybe a
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621680855671"><span class="hs-identifier hs-var">v</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">TypeMap a
</span><a href="#local-6989586621680855674"><span class="hs-identifier hs-var">m</span></a></span><span>
</span><span id="line-685"></span><span>
</span><span id="line-686"></span><span class="hs-comment">-- | Construct a deBruijn environment with the given variables in scope.</span><span>
</span><span id="line-687"></span><span class="hs-comment">-- e.g. @mkDeBruijnEnv [a,b,c]@ constructs a context @forall a b c.@</span><span>
</span><span id="line-688"></span><span class="annot"><a href="GHC.Core.Map.html#mkDeBruijnContext"><span class="hs-identifier hs-type">mkDeBruijnContext</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.Var.html#Var"><span class="hs-identifier hs-type">Var</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CmEnv"><span class="hs-identifier hs-type">CmEnv</span></a></span><span>
</span><span id="line-689"></span><span id="mkDeBruijnContext"><span class="annot"><span class="annottext">mkDeBruijnContext :: [Id] -&gt; CmEnv
</span><a href="GHC.Core.Map.html#mkDeBruijnContext"><span class="hs-identifier hs-var hs-var">mkDeBruijnContext</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; [Id] -&gt; CmEnv
</span><a href="GHC.Core.Map.html#extendCMEs"><span class="hs-identifier hs-var">extendCMEs</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="GHC.Core.Map.html#emptyCME"><span class="hs-identifier hs-var">emptyCME</span></a></span><span>
</span><span id="line-690"></span><span>
</span><span id="line-691"></span><span class="hs-comment">-- | A 'LooseTypeMap' doesn't do a kind-check. Thus, when lookup up (t |&gt; g),</span><span>
</span><span id="line-692"></span><span class="hs-comment">-- you'll find entries inserted under (t), even if (g) is non-reflexive.</span><span>
</span><span id="line-693"></span><span class="hs-keyword">newtype</span><span> </span><span id="LooseTypeMap"><span class="annot"><a href="GHC.Core.Map.html#LooseTypeMap"><span class="hs-identifier hs-var">LooseTypeMap</span></a></span></span><span> </span><span id="local-6989586621680856940"><span class="annot"><a href="#local-6989586621680856940"><span class="hs-identifier hs-type">a</span></a></span></span><span>
</span><span id="line-694"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span id="LooseTypeMap"><span class="annot"><a href="GHC.Core.Map.html#LooseTypeMap"><span class="hs-identifier hs-var">LooseTypeMap</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#TypeMapG"><span class="hs-identifier hs-type">TypeMapG</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680856940"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-695"></span><span>
</span><span id="line-696"></span><span class="hs-keyword">instance</span><span> </span><span class="annot"><a href="GHC.Data.TrieMap.html#TrieMap"><span class="hs-identifier hs-type">TrieMap</span></a></span><span> </span><span class="annot"><a href="GHC.Core.Map.html#LooseTypeMap"><span class="hs-identifier hs-type">LooseTypeMap</span></a></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-697"></span><span>  </span><span class="hs-keyword">type</span><span> </span><span id="Key"><span class="annot"><a href="GHC.Data.TrieMap.html#Key"><span class="hs-identifier hs-var">Key</span></a></span></span><span> </span><span class="annot"><a href="GHC.Core.Map.html#LooseTypeMap"><span class="hs-identifier hs-type">LooseTypeMap</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-698"></span><span>  </span><span id="local-6989586621680855658"><span class="annot"><span class="annottext">emptyTM :: forall a. LooseTypeMap a
</span><a href="#local-6989586621680855658"><span class="hs-identifier hs-var hs-var hs-var hs-var">emptyTM</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeMapG a -&gt; LooseTypeMap a
forall a. TypeMapG a -&gt; LooseTypeMap a
</span><a href="GHC.Core.Map.html#LooseTypeMap"><span class="hs-identifier hs-var">LooseTypeMap</span></a></span><span> </span><span class="annot"><span class="annottext">TypeMapG a
forall (m :: * -&gt; *) a. TrieMap m =&gt; m a
</span><a href="GHC.Data.TrieMap.html#emptyTM"><span class="hs-identifier hs-var">emptyTM</span></a></span><span>
</span><span id="line-699"></span><span>  </span><span id="local-6989586621680855653"><span class="annot"><span class="annottext">lookupTM :: forall b. Key LooseTypeMap -&gt; LooseTypeMap b -&gt; Maybe b
</span><a href="#local-6989586621680855653"><span class="hs-identifier hs-var hs-var hs-var hs-var">lookupTM</span></a></span></span><span> </span><span id="local-6989586621680855652"><span class="annot"><span class="annottext">Key LooseTypeMap
</span><a href="#local-6989586621680855652"><span class="hs-identifier hs-var">k</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#LooseTypeMap"><span class="hs-identifier hs-type">LooseTypeMap</span></a></span><span> </span><span id="local-6989586621680855651"><span class="annot"><span class="annottext">TypeMapG b
</span><a href="#local-6989586621680855651"><span class="hs-identifier hs-var">m</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Key (GenMap TypeMapX) -&gt; TypeMapG b -&gt; Maybe b
forall (m :: * -&gt; *) b. TrieMap m =&gt; Key m -&gt; m b -&gt; Maybe b
</span><a href="GHC.Data.TrieMap.html#lookupTM"><span class="hs-identifier hs-var">lookupTM</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Type -&gt; DeBruijn Type
forall a. a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#deBruijnize"><span class="hs-identifier hs-var">deBruijnize</span></a></span><span> </span><span class="annot"><span class="annottext">Type
Key LooseTypeMap
</span><a href="#local-6989586621680855652"><span class="hs-identifier hs-var">k</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">TypeMapG b
</span><a href="#local-6989586621680855651"><span class="hs-identifier hs-var">m</span></a></span><span>
</span><span id="line-700"></span><span>  </span><span id="local-6989586621680855646"><span class="annot"><span class="annottext">alterTM :: forall b.
Key LooseTypeMap -&gt; XT b -&gt; LooseTypeMap b -&gt; LooseTypeMap b
</span><a href="#local-6989586621680855646"><span class="hs-identifier hs-var hs-var hs-var hs-var">alterTM</span></a></span></span><span> </span><span id="local-6989586621680855645"><span class="annot"><span class="annottext">Key LooseTypeMap
</span><a href="#local-6989586621680855645"><span class="hs-identifier hs-var">k</span></a></span></span><span> </span><span id="local-6989586621680855644"><span class="annot"><span class="annottext">XT b
</span><a href="#local-6989586621680855644"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#LooseTypeMap"><span class="hs-identifier hs-type">LooseTypeMap</span></a></span><span> </span><span id="local-6989586621680855643"><span class="annot"><span class="annottext">TypeMapG b
</span><a href="#local-6989586621680855643"><span class="hs-identifier hs-var">m</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeMapG b -&gt; LooseTypeMap b
forall a. TypeMapG a -&gt; LooseTypeMap a
</span><a href="GHC.Core.Map.html#LooseTypeMap"><span class="hs-identifier hs-var">LooseTypeMap</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Key (GenMap TypeMapX) -&gt; XT b -&gt; TypeMapG b -&gt; TypeMapG b
forall (m :: * -&gt; *) b. TrieMap m =&gt; Key m -&gt; XT b -&gt; m b -&gt; m b
</span><a href="GHC.Data.TrieMap.html#alterTM"><span class="hs-identifier hs-var">alterTM</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Type -&gt; DeBruijn Type
forall a. a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#deBruijnize"><span class="hs-identifier hs-var">deBruijnize</span></a></span><span> </span><span class="annot"><span class="annottext">Type
Key LooseTypeMap
</span><a href="#local-6989586621680855645"><span class="hs-identifier hs-var">k</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">XT b
</span><a href="#local-6989586621680855644"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">TypeMapG b
</span><a href="#local-6989586621680855643"><span class="hs-identifier hs-var">m</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-701"></span><span>  </span><span id="local-6989586621680855638"><span class="annot"><span class="annottext">foldTM :: forall a b. (a -&gt; b -&gt; b) -&gt; LooseTypeMap a -&gt; b -&gt; b
</span><a href="#local-6989586621680855638"><span class="hs-identifier hs-var hs-var hs-var hs-var">foldTM</span></a></span></span><span> </span><span id="local-6989586621680855637"><span class="annot"><span class="annottext">a -&gt; b -&gt; b
</span><a href="#local-6989586621680855637"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#LooseTypeMap"><span class="hs-identifier hs-type">LooseTypeMap</span></a></span><span> </span><span id="local-6989586621680855636"><span class="annot"><span class="annottext">TypeMapG a
</span><a href="#local-6989586621680855636"><span class="hs-identifier hs-var">m</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(a -&gt; b -&gt; b) -&gt; TypeMapG a -&gt; b -&gt; b
forall (m :: * -&gt; *) a b.
TrieMap m =&gt;
(a -&gt; b -&gt; b) -&gt; m a -&gt; b -&gt; b
</span><a href="GHC.Data.TrieMap.html#foldTM"><span class="hs-identifier hs-var">foldTM</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b -&gt; b
</span><a href="#local-6989586621680855637"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">TypeMapG a
</span><a href="#local-6989586621680855636"><span class="hs-identifier hs-var">m</span></a></span><span>
</span><span id="line-702"></span><span>  </span><span id="local-6989586621680855631"><span class="annot"><span class="annottext">mapTM :: forall a b. (a -&gt; b) -&gt; LooseTypeMap a -&gt; LooseTypeMap b
</span><a href="#local-6989586621680855631"><span class="hs-identifier hs-var hs-var hs-var hs-var">mapTM</span></a></span></span><span> </span><span id="local-6989586621680855630"><span class="annot"><span class="annottext">a -&gt; b
</span><a href="#local-6989586621680855630"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#LooseTypeMap"><span class="hs-identifier hs-type">LooseTypeMap</span></a></span><span> </span><span id="local-6989586621680855629"><span class="annot"><span class="annottext">TypeMapG a
</span><a href="#local-6989586621680855629"><span class="hs-identifier hs-var">m</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeMapG b -&gt; LooseTypeMap b
forall a. TypeMapG a -&gt; LooseTypeMap a
</span><a href="GHC.Core.Map.html#LooseTypeMap"><span class="hs-identifier hs-var">LooseTypeMap</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(a -&gt; b) -&gt; TypeMapG a -&gt; TypeMapG b
forall (m :: * -&gt; *) a b. TrieMap m =&gt; (a -&gt; b) -&gt; m a -&gt; m b
</span><a href="GHC.Data.TrieMap.html#mapTM"><span class="hs-identifier hs-var">mapTM</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b
</span><a href="#local-6989586621680855630"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">TypeMapG a
</span><a href="#local-6989586621680855629"><span class="hs-identifier hs-var">m</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-703"></span><span>
</span><span id="line-704"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
                   Variables
*                                                                      *
************************************************************************
-}</span><span>
</span><span id="line-711"></span><span>
</span><span id="line-712"></span><span class="hs-keyword">type</span><span> </span><span id="BoundVar"><span class="annot"><a href="GHC.Core.Map.html#BoundVar"><span class="hs-identifier hs-var">BoundVar</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span>  </span><span class="hs-comment">-- Bound variables are deBruijn numbered</span><span>
</span><span id="line-713"></span><span class="hs-keyword">type</span><span> </span><span id="BoundVarMap"><span class="annot"><a href="GHC.Core.Map.html#BoundVarMap"><span class="hs-identifier hs-var">BoundVarMap</span></a></span></span><span> </span><span id="local-6989586621680855628"><span class="annot"><a href="#local-6989586621680855628"><span class="hs-identifier hs-type">a</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="../../containers/src/Data.IntMap.Internal.html#IntMap"><span class="hs-identifier hs-type">IntMap.IntMap</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680855628"><span class="hs-identifier hs-type">a</span></a></span><span>
</span><span id="line-714"></span><span>
</span><span id="line-715"></span><span class="hs-keyword">data</span><span> </span><span id="CmEnv"><span class="annot"><a href="GHC.Core.Map.html#CmEnv"><span class="hs-identifier hs-var">CmEnv</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="CME"><span class="annot"><a href="GHC.Core.Map.html#CME"><span class="hs-identifier hs-var">CME</span></a></span></span><span> </span><span class="hs-special">{</span><span> </span><span id="cme_next"><span class="annot"><span class="annottext">CmEnv -&gt; BoundVar
</span><a href="GHC.Core.Map.html#cme_next"><span class="hs-identifier hs-var hs-var">cme_next</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-glyph">!</span><span class="annot"><a href="GHC.Core.Map.html#BoundVar"><span class="hs-identifier hs-type">BoundVar</span></a></span><span>
</span><span id="line-716"></span><span>                 </span><span class="hs-special">,</span><span> </span><span id="cme_env"><span class="annot"><span class="annottext">CmEnv -&gt; VarEnv BoundVar
</span><a href="GHC.Core.Map.html#cme_env"><span class="hs-identifier hs-var hs-var">cme_env</span></a></span></span><span>  </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.Env.html#VarEnv"><span class="hs-identifier hs-type">VarEnv</span></a></span><span> </span><span class="annot"><a href="GHC.Core.Map.html#BoundVar"><span class="hs-identifier hs-type">BoundVar</span></a></span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-717"></span><span>
</span><span id="line-718"></span><span class="annot"><a href="GHC.Core.Map.html#emptyCME"><span class="hs-identifier hs-type">emptyCME</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CmEnv"><span class="hs-identifier hs-type">CmEnv</span></a></span><span>
</span><span id="line-719"></span><span id="emptyCME"><span class="annot"><span class="annottext">emptyCME :: CmEnv
</span><a href="GHC.Core.Map.html#emptyCME"><span class="hs-identifier hs-var hs-var">emptyCME</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CME :: BoundVar -&gt; VarEnv BoundVar -&gt; CmEnv
</span><a href="GHC.Core.Map.html#CME"><span class="hs-identifier hs-type">CME</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">cme_next :: BoundVar
</span><a href="GHC.Core.Map.html#cme_next"><span class="hs-identifier hs-var">cme_next</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BoundVar
</span><span class="hs-number">0</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">cme_env :: VarEnv BoundVar
</span><a href="GHC.Core.Map.html#cme_env"><span class="hs-identifier hs-var">cme_env</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">VarEnv BoundVar
forall a. VarEnv a
</span><a href="GHC.Types.Var.Env.html#emptyVarEnv"><span class="hs-identifier hs-var">emptyVarEnv</span></a></span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-720"></span><span>
</span><span id="line-721"></span><span class="annot"><a href="GHC.Core.Map.html#extendCME"><span class="hs-identifier hs-type">extendCME</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CmEnv"><span class="hs-identifier hs-type">CmEnv</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Var"><span class="hs-identifier hs-type">Var</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CmEnv"><span class="hs-identifier hs-type">CmEnv</span></a></span><span>
</span><span id="line-722"></span><span id="extendCME"><span class="annot"><span class="annottext">extendCME :: CmEnv -&gt; Id -&gt; CmEnv
</span><a href="GHC.Core.Map.html#extendCME"><span class="hs-identifier hs-var hs-var">extendCME</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#CME"><span class="hs-identifier hs-type">CME</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">cme_next :: CmEnv -&gt; BoundVar
</span><a href="GHC.Core.Map.html#cme_next"><span class="hs-identifier hs-var">cme_next</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680855623"><span class="annot"><span class="annottext">BoundVar
</span><a href="#local-6989586621680855623"><span class="hs-identifier hs-var">bv</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">cme_env :: CmEnv -&gt; VarEnv BoundVar
</span><a href="GHC.Core.Map.html#cme_env"><span class="hs-identifier hs-var">cme_env</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680855622"><span class="annot"><span class="annottext">VarEnv BoundVar
</span><a href="#local-6989586621680855622"><span class="hs-identifier hs-var">env</span></a></span></span><span> </span><span class="hs-special">}</span><span class="hs-special">)</span><span> </span><span id="local-6989586621680855621"><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680855621"><span class="hs-identifier hs-var">v</span></a></span></span><span>
</span><span id="line-723"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CME :: BoundVar -&gt; VarEnv BoundVar -&gt; CmEnv
</span><a href="GHC.Core.Map.html#CME"><span class="hs-identifier hs-type">CME</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">cme_next :: BoundVar
</span><a href="GHC.Core.Map.html#cme_next"><span class="hs-identifier hs-var">cme_next</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BoundVar
</span><a href="#local-6989586621680855623"><span class="hs-identifier hs-var">bv</span></a></span><span class="annot"><span class="annottext">BoundVar -&gt; BoundVar -&gt; BoundVar
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#%2B"><span class="hs-operator hs-var">+</span></a></span><span class="annot"><span class="annottext">BoundVar
</span><span class="hs-number">1</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">cme_env :: VarEnv BoundVar
</span><a href="GHC.Core.Map.html#cme_env"><span class="hs-identifier hs-var">cme_env</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">VarEnv BoundVar -&gt; Id -&gt; BoundVar -&gt; VarEnv BoundVar
forall a. VarEnv a -&gt; Id -&gt; a -&gt; VarEnv a
</span><a href="GHC.Types.Var.Env.html#extendVarEnv"><span class="hs-identifier hs-var">extendVarEnv</span></a></span><span> </span><span class="annot"><span class="annottext">VarEnv BoundVar
</span><a href="#local-6989586621680855622"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680855621"><span class="hs-identifier hs-var">v</span></a></span><span> </span><span class="annot"><span class="annottext">BoundVar
</span><a href="#local-6989586621680855623"><span class="hs-identifier hs-var">bv</span></a></span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-724"></span><span>
</span><span id="line-725"></span><span class="annot"><a href="GHC.Core.Map.html#extendCMEs"><span class="hs-identifier hs-type">extendCMEs</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CmEnv"><span class="hs-identifier hs-type">CmEnv</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.Var.html#Var"><span class="hs-identifier hs-type">Var</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CmEnv"><span class="hs-identifier hs-type">CmEnv</span></a></span><span>
</span><span id="line-726"></span><span id="extendCMEs"><span class="annot"><span class="annottext">extendCMEs :: CmEnv -&gt; [Id] -&gt; CmEnv
</span><a href="GHC.Core.Map.html#extendCMEs"><span class="hs-identifier hs-var hs-var">extendCMEs</span></a></span></span><span> </span><span id="local-6989586621680855618"><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855618"><span class="hs-identifier hs-var">env</span></a></span></span><span> </span><span id="local-6989586621680855617"><span class="annot"><span class="annottext">[Id]
</span><a href="#local-6989586621680855617"><span class="hs-identifier hs-var">vs</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(CmEnv -&gt; Id -&gt; CmEnv) -&gt; CmEnv -&gt; [Id] -&gt; CmEnv
forall (t :: * -&gt; *) b a.
Foldable t =&gt;
(b -&gt; a -&gt; b) -&gt; b -&gt; t a -&gt; b
</span><a href="../../base/src/Data.Foldable.html#foldl%27"><span class="hs-identifier hs-var">foldl'</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; Id -&gt; CmEnv
</span><a href="GHC.Core.Map.html#extendCME"><span class="hs-identifier hs-var">extendCME</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855618"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">[Id]
</span><a href="#local-6989586621680855617"><span class="hs-identifier hs-var">vs</span></a></span><span>
</span><span id="line-727"></span><span>
</span><span id="line-728"></span><span class="annot"><a href="GHC.Core.Map.html#lookupCME"><span class="hs-identifier hs-type">lookupCME</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CmEnv"><span class="hs-identifier hs-type">CmEnv</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Var"><span class="hs-identifier hs-type">Var</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="GHC.Core.Map.html#BoundVar"><span class="hs-identifier hs-type">BoundVar</span></a></span><span>
</span><span id="line-729"></span><span id="lookupCME"><span class="annot"><span class="annottext">lookupCME :: CmEnv -&gt; Id -&gt; Maybe BoundVar
</span><a href="GHC.Core.Map.html#lookupCME"><span class="hs-identifier hs-var hs-var">lookupCME</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#CME"><span class="hs-identifier hs-type">CME</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">cme_env :: CmEnv -&gt; VarEnv BoundVar
</span><a href="GHC.Core.Map.html#cme_env"><span class="hs-identifier hs-var">cme_env</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680855616"><span class="annot"><span class="annottext">VarEnv BoundVar
</span><a href="#local-6989586621680855616"><span class="hs-identifier hs-var">env</span></a></span></span><span> </span><span class="hs-special">}</span><span class="hs-special">)</span><span> </span><span id="local-6989586621680855615"><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680855615"><span class="hs-identifier hs-var">v</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">VarEnv BoundVar -&gt; Id -&gt; Maybe BoundVar
forall a. VarEnv a -&gt; Id -&gt; Maybe a
</span><a href="GHC.Types.Var.Env.html#lookupVarEnv"><span class="hs-identifier hs-var">lookupVarEnv</span></a></span><span> </span><span class="annot"><span class="annottext">VarEnv BoundVar
</span><a href="#local-6989586621680855616"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680855615"><span class="hs-identifier hs-var">v</span></a></span><span>
</span><span id="line-730"></span><span>
</span><span id="line-731"></span><span class="hs-comment">-- | @DeBruijn a@ represents @a@ modulo alpha-renaming.  This is achieved</span><span>
</span><span id="line-732"></span><span class="hs-comment">-- by equipping the value with a 'CmEnv', which tracks an on-the-fly deBruijn</span><span>
</span><span id="line-733"></span><span class="hs-comment">-- numbering.  This allows us to define an 'Eq' instance for @DeBruijn a@, even</span><span>
</span><span id="line-734"></span><span class="hs-comment">-- if this was not (easily) possible for @a@.  Note: we purposely don't</span><span>
</span><span id="line-735"></span><span class="hs-comment">-- export the constructor.  Make a helper function if you find yourself</span><span>
</span><span id="line-736"></span><span class="hs-comment">-- needing it.</span><span>
</span><span id="line-737"></span><span class="hs-keyword">data</span><span> </span><span id="DeBruijn"><span class="annot"><a href="GHC.Core.Map.html#DeBruijn"><span class="hs-identifier hs-var">DeBruijn</span></a></span></span><span> </span><span id="local-6989586621680857185"><span class="annot"><a href="#local-6989586621680857185"><span class="hs-identifier hs-type">a</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="D"><span class="annot"><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span></span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CmEnv"><span class="hs-identifier hs-type">CmEnv</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857185"><span class="hs-identifier hs-type">a</span></a></span><span>
</span><span id="line-738"></span><span>
</span><span id="line-739"></span><span class="hs-comment">-- | Synthesizes a @DeBruijn a@ from an @a@, by assuming that there are no</span><span>
</span><span id="line-740"></span><span class="hs-comment">-- bound binders (an empty 'CmEnv').  This is usually what you want if there</span><span>
</span><span id="line-741"></span><span class="hs-comment">-- isn't already a 'CmEnv' in scope.</span><span>
</span><span id="line-742"></span><span id="local-6989586621680857219"><span class="annot"><a href="GHC.Core.Map.html#deBruijnize"><span class="hs-identifier hs-type">deBruijnize</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="#local-6989586621680857219"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#DeBruijn"><span class="hs-identifier hs-type">DeBruijn</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857219"><span class="hs-identifier hs-type">a</span></a></span></span><span>
</span><span id="line-743"></span><span id="deBruijnize"><span class="annot"><span class="annottext">deBruijnize :: forall a. a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#deBruijnize"><span class="hs-identifier hs-var hs-var">deBruijnize</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; a -&gt; DeBruijn a
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="GHC.Core.Map.html#emptyCME"><span class="hs-identifier hs-var">emptyCME</span></a></span><span>
</span><span id="line-744"></span><span>
</span><span id="line-745"></span><span id="local-6989586621680857187"><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621680855611"><span class="annot"><span class="hs-identifier hs-type">Eq</span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#DeBruijn"><span class="hs-identifier hs-type">DeBruijn</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857187"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Eq</span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#DeBruijn"><span class="hs-identifier hs-type">DeBruijn</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><a href="#local-6989586621680857187"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-746"></span><span>    </span><span class="annot"><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-type">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><span class="hs-identifier">_</span></span><span>   </span><span class="hs-special">[</span><span class="hs-special">]</span><span>     </span><span id="local-6989586621680855608"><span class="annot"><span class="annottext">== :: DeBruijn [a] -&gt; DeBruijn [a] -&gt; Bool
</span><span class="hs-operator hs-var hs-var hs-var hs-var">==</span></span></span><span> </span><span class="annot"><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-type">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><span class="hs-identifier">_</span></span><span>    </span><span class="hs-special">[</span><span class="hs-special">]</span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-747"></span><span>    </span><span class="annot"><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-type">D</span></a></span><span> </span><span id="local-6989586621680855607"><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855607"><span class="hs-identifier hs-var">env</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621680855606"><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621680855606"><span class="hs-identifier hs-var">x</span></a></span></span><span class="annot"><span class="hs-glyph hs-type">:</span></span><span id="local-6989586621680855605"><span class="annot"><span class="annottext">[a]
</span><a href="#local-6989586621680855605"><span class="hs-identifier hs-var">xs</span></a></span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-type">D</span></a></span><span> </span><span id="local-6989586621680855604"><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855604"><span class="hs-identifier hs-var">env'</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621680855603"><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621680855603"><span class="hs-identifier hs-var">x'</span></a></span></span><span class="annot"><span class="hs-glyph hs-type">:</span></span><span id="local-6989586621680855602"><span class="annot"><span class="annottext">[a]
</span><a href="#local-6989586621680855602"><span class="hs-identifier hs-var">xs'</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; a -&gt; DeBruijn a
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855607"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621680855606"><span class="hs-identifier hs-var">x</span></a></span><span>  </span><span class="annot"><span class="annottext">DeBruijn a -&gt; DeBruijn a -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; a -&gt; DeBruijn a
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855604"><span class="hs-identifier hs-var">env'</span></a></span><span> </span><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621680855603"><span class="hs-identifier hs-var">x'</span></a></span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; Bool
</span><span class="hs-operator hs-var">&amp;&amp;</span></span><span>
</span><span id="line-748"></span><span>                                      </span><span class="annot"><span class="annottext">CmEnv -&gt; [a] -&gt; DeBruijn [a]
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855607"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">[a]
</span><a href="#local-6989586621680855605"><span class="hs-identifier hs-var">xs</span></a></span><span> </span><span class="annot"><span class="annottext">DeBruijn [a] -&gt; DeBruijn [a] -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; [a] -&gt; DeBruijn [a]
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855604"><span class="hs-identifier hs-var">env'</span></a></span><span> </span><span class="annot"><span class="annottext">[a]
</span><a href="#local-6989586621680855602"><span class="hs-identifier hs-var">xs'</span></a></span><span>
</span><span id="line-749"></span><span>    </span><span class="annot"><span class="annottext">DeBruijn [a]
</span><span class="hs-identifier">_</span></span><span>            </span><span class="annot"><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">DeBruijn [a]
</span><span class="hs-identifier">_</span></span><span>               </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span></span><span>
</span><span id="line-750"></span><span>
</span><span id="line-751"></span><span id="local-6989586621680857188"><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621680855599"><span class="annot"><span class="hs-identifier hs-type">Eq</span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#DeBruijn"><span class="hs-identifier hs-type">DeBruijn</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857188"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Eq</span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#DeBruijn"><span class="hs-identifier hs-type">DeBruijn</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857188"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-752"></span><span>    </span><span class="annot"><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-type">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><span class="hs-identifier">_</span></span><span>   </span><span class="annot"><span class="annottext">Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span>  </span><span id="local-6989586621680855597"><span class="annot"><span class="annottext">== :: DeBruijn (Maybe a) -&gt; DeBruijn (Maybe a) -&gt; Bool
</span><span class="hs-operator hs-var hs-var hs-var hs-var">==</span></span></span><span> </span><span class="annot"><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-type">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><span class="hs-identifier">_</span></span><span>    </span><span class="annot"><span class="annottext">Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-753"></span><span>    </span><span class="annot"><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-type">D</span></a></span><span> </span><span id="local-6989586621680855596"><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855596"><span class="hs-identifier hs-var">env</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span id="local-6989586621680855595"><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621680855595"><span class="hs-identifier hs-var">x</span></a></span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-type">D</span></a></span><span> </span><span id="local-6989586621680855594"><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855594"><span class="hs-identifier hs-var">env'</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span id="local-6989586621680855593"><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621680855593"><span class="hs-identifier hs-var">x'</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; a -&gt; DeBruijn a
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855596"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621680855595"><span class="hs-identifier hs-var">x</span></a></span><span>  </span><span class="annot"><span class="annottext">DeBruijn a -&gt; DeBruijn a -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; a -&gt; DeBruijn a
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855594"><span class="hs-identifier hs-var">env'</span></a></span><span> </span><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621680855593"><span class="hs-identifier hs-var">x'</span></a></span><span>
</span><span id="line-754"></span><span>    </span><span class="annot"><span class="annottext">DeBruijn (Maybe a)
</span><span class="hs-identifier">_</span></span><span>              </span><span class="annot"><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">DeBruijn (Maybe a)
</span><span class="hs-identifier">_</span></span><span>                </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span></span><span>
</span><span id="line-755"></span><span>
</span><span id="line-756"></span><span class="hs-comment">--------- Variable binders -------------</span><span>
</span><span id="line-757"></span><span>
</span><span id="line-758"></span><span class="hs-comment">-- | A 'BndrMap' is a 'TypeMapG' which allows us to distinguish between</span><span>
</span><span id="line-759"></span><span class="hs-comment">-- binding forms whose binders have different types.  For example,</span><span>
</span><span id="line-760"></span><span class="hs-comment">-- if we are doing a 'TrieMap' lookup on @\(x :: Int) -&gt; ()@, we should</span><span>
</span><span id="line-761"></span><span class="hs-comment">-- not pick up an entry in the 'TrieMap' for @\(x :: Bool) -&gt; ()@:</span><span>
</span><span id="line-762"></span><span class="hs-comment">-- we can disambiguate this by matching on the type (or kind, if this</span><span>
</span><span id="line-763"></span><span class="hs-comment">-- a binder in a type) of the binder.</span><span>
</span><span id="line-764"></span><span class="hs-comment">--</span><span>
</span><span id="line-765"></span><span class="hs-comment">-- We also need to do the same for multiplicity! Which, since multiplicities are</span><span>
</span><span id="line-766"></span><span class="hs-comment">-- encoded simply as a 'Type', amounts to have a Trie for a pair of types. Tries</span><span>
</span><span id="line-767"></span><span class="hs-comment">-- of pairs are composition.</span><span>
</span><span id="line-768"></span><span class="hs-keyword">data</span><span> </span><span id="BndrMap"><span class="annot"><a href="GHC.Core.Map.html#BndrMap"><span class="hs-identifier hs-var">BndrMap</span></a></span></span><span> </span><span id="local-6989586621680856925"><span class="annot"><a href="#local-6989586621680856925"><span class="hs-identifier hs-type">a</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="BndrMap"><span class="annot"><a href="GHC.Core.Map.html#BndrMap"><span class="hs-identifier hs-var">BndrMap</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#TypeMapG"><span class="hs-identifier hs-type">TypeMapG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Data.TrieMap.html#MaybeMap"><span class="hs-identifier hs-type">MaybeMap</span></a></span><span> </span><span class="annot"><a href="GHC.Core.Map.html#TypeMapG"><span class="hs-identifier hs-type">TypeMapG</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680856925"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-769"></span><span>
</span><span id="line-770"></span><span class="hs-keyword">instance</span><span> </span><span class="annot"><a href="GHC.Data.TrieMap.html#TrieMap"><span class="hs-identifier hs-type">TrieMap</span></a></span><span> </span><span class="annot"><a href="GHC.Core.Map.html#BndrMap"><span class="hs-identifier hs-type">BndrMap</span></a></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-771"></span><span>   </span><span class="hs-keyword">type</span><span> </span><span id="Key"><span class="annot"><a href="GHC.Data.TrieMap.html#Key"><span class="hs-identifier hs-var">Key</span></a></span></span><span> </span><span class="annot"><a href="GHC.Core.Map.html#BndrMap"><span class="hs-identifier hs-type">BndrMap</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Var"><span class="hs-identifier hs-type">Var</span></a></span><span>
</span><span id="line-772"></span><span>   </span><span id="local-6989586621680855582"><span class="annot"><span class="annottext">emptyTM :: forall a. BndrMap a
</span><a href="#local-6989586621680855582"><span class="hs-identifier hs-var hs-var hs-var hs-var">emptyTM</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeMapG (MaybeMap (GenMap TypeMapX) a) -&gt; BndrMap a
forall a. TypeMapG (MaybeMap (GenMap TypeMapX) a) -&gt; BndrMap a
</span><a href="GHC.Core.Map.html#BndrMap"><span class="hs-identifier hs-var">BndrMap</span></a></span><span> </span><span class="annot"><span class="annottext">TypeMapG (MaybeMap (GenMap TypeMapX) a)
forall (m :: * -&gt; *) a. TrieMap m =&gt; m a
</span><a href="GHC.Data.TrieMap.html#emptyTM"><span class="hs-identifier hs-var">emptyTM</span></a></span><span>
</span><span id="line-773"></span><span>   </span><span id="local-6989586621680855581"><span class="annot"><span class="annottext">lookupTM :: forall b. Key BndrMap -&gt; BndrMap b -&gt; Maybe b
</span><a href="#local-6989586621680855581"><span class="hs-identifier hs-var hs-var hs-var hs-var">lookupTM</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; Id -&gt; BndrMap b -&gt; Maybe b
forall a. CmEnv -&gt; Id -&gt; BndrMap a -&gt; Maybe a
</span><a href="GHC.Core.Map.html#lkBndr"><span class="hs-identifier hs-var">lkBndr</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="GHC.Core.Map.html#emptyCME"><span class="hs-identifier hs-var">emptyCME</span></a></span><span>
</span><span id="line-774"></span><span>   </span><span id="local-6989586621680855580"><span class="annot"><span class="annottext">alterTM :: forall b. Key BndrMap -&gt; XT b -&gt; BndrMap b -&gt; BndrMap b
</span><a href="#local-6989586621680855580"><span class="hs-identifier hs-var hs-var hs-var hs-var">alterTM</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; Id -&gt; (Maybe b -&gt; Maybe b) -&gt; BndrMap b -&gt; BndrMap b
forall a. CmEnv -&gt; Id -&gt; XT a -&gt; BndrMap a -&gt; BndrMap a
</span><a href="GHC.Core.Map.html#xtBndr"><span class="hs-identifier hs-var">xtBndr</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="GHC.Core.Map.html#emptyCME"><span class="hs-identifier hs-var">emptyCME</span></a></span><span>
</span><span id="line-775"></span><span>   </span><span id="local-6989586621680855579"><span class="annot"><span class="annottext">foldTM :: forall a b. (a -&gt; b -&gt; b) -&gt; BndrMap a -&gt; b -&gt; b
</span><a href="#local-6989586621680855579"><span class="hs-identifier hs-var hs-var hs-var hs-var">foldTM</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(a -&gt; b -&gt; b) -&gt; BndrMap a -&gt; b -&gt; b
forall a b. (a -&gt; b -&gt; b) -&gt; BndrMap a -&gt; b -&gt; b
</span><a href="GHC.Core.Map.html#fdBndrMap"><span class="hs-identifier hs-var">fdBndrMap</span></a></span><span>
</span><span id="line-776"></span><span>   </span><span id="local-6989586621680855577"><span class="annot"><span class="annottext">mapTM :: forall a b. (a -&gt; b) -&gt; BndrMap a -&gt; BndrMap b
</span><a href="#local-6989586621680855577"><span class="hs-identifier hs-var hs-var hs-var hs-var">mapTM</span></a></span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(a -&gt; b) -&gt; BndrMap a -&gt; BndrMap b
forall a b. (a -&gt; b) -&gt; BndrMap a -&gt; BndrMap b
</span><a href="GHC.Core.Map.html#mapBndrMap"><span class="hs-identifier hs-var">mapBndrMap</span></a></span><span>
</span><span id="line-777"></span><span>
</span><span id="line-778"></span><span id="local-6989586621680855574"><span id="local-6989586621680855575"><span class="annot"><a href="GHC.Core.Map.html#mapBndrMap"><span class="hs-identifier hs-type">mapBndrMap</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621680855575"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680855574"><span class="hs-identifier hs-type">b</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#BndrMap"><span class="hs-identifier hs-type">BndrMap</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680855575"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#BndrMap"><span class="hs-identifier hs-type">BndrMap</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680855574"><span class="hs-identifier hs-type">b</span></a></span></span></span><span>
</span><span id="line-779"></span><span id="mapBndrMap"><span class="annot"><span class="annottext">mapBndrMap :: forall a b. (a -&gt; b) -&gt; BndrMap a -&gt; BndrMap b
</span><a href="GHC.Core.Map.html#mapBndrMap"><span class="hs-identifier hs-var hs-var">mapBndrMap</span></a></span></span><span> </span><span id="local-6989586621680855567"><span class="annot"><span class="annottext">a -&gt; b
</span><a href="#local-6989586621680855567"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#BndrMap"><span class="hs-identifier hs-type">BndrMap</span></a></span><span> </span><span id="local-6989586621680855566"><span class="annot"><span class="annottext">TypeMapG (MaybeMap (GenMap TypeMapX) a)
</span><a href="#local-6989586621680855566"><span class="hs-identifier hs-var">tm</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeMapG (MaybeMap (GenMap TypeMapX) b) -&gt; BndrMap b
forall a. TypeMapG (MaybeMap (GenMap TypeMapX) a) -&gt; BndrMap a
</span><a href="GHC.Core.Map.html#BndrMap"><span class="hs-identifier hs-var">BndrMap</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(MaybeMap (GenMap TypeMapX) a -&gt; MaybeMap (GenMap TypeMapX) b)
-&gt; TypeMapG (MaybeMap (GenMap TypeMapX) a)
-&gt; TypeMapG (MaybeMap (GenMap TypeMapX) b)
forall (m :: * -&gt; *) a b. TrieMap m =&gt; (a -&gt; b) -&gt; m a -&gt; m b
</span><a href="GHC.Data.TrieMap.html#mapTM"><span class="hs-identifier hs-var">mapTM</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(a -&gt; b)
-&gt; MaybeMap (GenMap TypeMapX) a -&gt; MaybeMap (GenMap TypeMapX) b
forall (m :: * -&gt; *) a b. TrieMap m =&gt; (a -&gt; b) -&gt; m a -&gt; m b
</span><a href="GHC.Data.TrieMap.html#mapTM"><span class="hs-identifier hs-var">mapTM</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b
</span><a href="#local-6989586621680855567"><span class="hs-identifier hs-var">f</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">TypeMapG (MaybeMap (GenMap TypeMapX) a)
</span><a href="#local-6989586621680855566"><span class="hs-identifier hs-var">tm</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-780"></span><span>
</span><span id="line-781"></span><span id="local-6989586621680855564"><span id="local-6989586621680855565"><span class="annot"><a href="GHC.Core.Map.html#fdBndrMap"><span class="hs-identifier hs-type">fdBndrMap</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621680855565"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680855564"><span class="hs-identifier hs-type">b</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680855564"><span class="hs-identifier hs-type">b</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#BndrMap"><span class="hs-identifier hs-type">BndrMap</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680855565"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680855564"><span class="hs-identifier hs-type">b</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680855564"><span class="hs-identifier hs-type">b</span></a></span></span></span><span>
</span><span id="line-782"></span><span id="fdBndrMap"><span class="annot"><span class="annottext">fdBndrMap :: forall a b. (a -&gt; b -&gt; b) -&gt; BndrMap a -&gt; b -&gt; b
</span><a href="GHC.Core.Map.html#fdBndrMap"><span class="hs-identifier hs-var hs-var">fdBndrMap</span></a></span></span><span> </span><span id="local-6989586621680855558"><span class="annot"><span class="annottext">a -&gt; b -&gt; b
</span><a href="#local-6989586621680855558"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#BndrMap"><span class="hs-identifier hs-type">BndrMap</span></a></span><span> </span><span id="local-6989586621680855557"><span class="annot"><span class="annottext">TypeMapG (MaybeMap (GenMap TypeMapX) a)
</span><a href="#local-6989586621680855557"><span class="hs-identifier hs-var">tm</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(MaybeMap (GenMap TypeMapX) a -&gt; b -&gt; b)
-&gt; TypeMapG (MaybeMap (GenMap TypeMapX) a) -&gt; b -&gt; b
forall (m :: * -&gt; *) a b.
TrieMap m =&gt;
(a -&gt; b -&gt; b) -&gt; m a -&gt; b -&gt; b
</span><a href="GHC.Data.TrieMap.html#foldTM"><span class="hs-identifier hs-var">foldTM</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(a -&gt; b -&gt; b) -&gt; MaybeMap (GenMap TypeMapX) a -&gt; b -&gt; b
forall (m :: * -&gt; *) a b.
TrieMap m =&gt;
(a -&gt; b -&gt; b) -&gt; m a -&gt; b -&gt; b
</span><a href="GHC.Data.TrieMap.html#foldTM"><span class="hs-identifier hs-var">foldTM</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b -&gt; b
</span><a href="#local-6989586621680855558"><span class="hs-identifier hs-var">f</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">TypeMapG (MaybeMap (GenMap TypeMapX) a)
</span><a href="#local-6989586621680855557"><span class="hs-identifier hs-var">tm</span></a></span><span>
</span><span id="line-783"></span><span>
</span><span id="line-784"></span><span>
</span><span id="line-785"></span><span class="hs-comment">-- Note [Binders]</span><span>
</span><span id="line-786"></span><span class="hs-comment">-- ~~~~~~~~~~~~~~</span><span>
</span><span id="line-787"></span><span class="hs-comment">-- We need to use 'BndrMap' for 'Coercion', 'CoreExpr' AND 'Type', since all</span><span>
</span><span id="line-788"></span><span class="hs-comment">-- of these data types have binding forms.</span><span>
</span><span id="line-789"></span><span>
</span><span id="line-790"></span><span id="local-6989586621680857127"><span class="annot"><a href="GHC.Core.Map.html#lkBndr"><span class="hs-identifier hs-type">lkBndr</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CmEnv"><span class="hs-identifier hs-type">CmEnv</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Var"><span class="hs-identifier hs-type">Var</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#BndrMap"><span class="hs-identifier hs-type">BndrMap</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857127"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857127"><span class="hs-identifier hs-type">a</span></a></span></span><span>
</span><span id="line-791"></span><span id="lkBndr"><span class="annot"><span class="annottext">lkBndr :: forall a. CmEnv -&gt; Id -&gt; BndrMap a -&gt; Maybe a
</span><a href="GHC.Core.Map.html#lkBndr"><span class="hs-identifier hs-var hs-var">lkBndr</span></a></span></span><span> </span><span id="local-6989586621680855548"><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855548"><span class="hs-identifier hs-var">env</span></a></span></span><span> </span><span id="local-6989586621680855547"><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680855547"><span class="hs-identifier hs-var">v</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#BndrMap"><span class="hs-identifier hs-type">BndrMap</span></a></span><span> </span><span id="local-6989586621680855546"><span class="annot"><span class="annottext">TypeMapG (MaybeMap (GenMap TypeMapX) a)
</span><a href="#local-6989586621680855546"><span class="hs-identifier hs-var">tymap</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
</span><span id="line-792"></span><span>  </span><span id="local-6989586621680855545"><span class="annot"><span class="annottext">MaybeMap (GenMap TypeMapX) a
</span><a href="#local-6989586621680855545"><span class="hs-identifier hs-var">multmap</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">Key TypeMapX
-&gt; TypeMapG (MaybeMap (GenMap TypeMapX) a)
-&gt; Maybe (MaybeMap (GenMap TypeMapX) a)
forall (m :: * -&gt; *) a.
(Eq (Key m), TrieMap m) =&gt;
Key m -&gt; GenMap m a -&gt; Maybe a
</span><a href="GHC.Data.TrieMap.html#lkG"><span class="hs-identifier hs-var">lkG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; Type -&gt; DeBruijn Type
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855548"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Id -&gt; Type
</span><a href="GHC.Types.Var.html#varType"><span class="hs-identifier hs-var hs-var">varType</span></a></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680855547"><span class="hs-identifier hs-var">v</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">TypeMapG (MaybeMap (GenMap TypeMapX) a)
</span><a href="#local-6989586621680855546"><span class="hs-identifier hs-var">tymap</span></a></span><span>
</span><span id="line-793"></span><span>  </span><span class="annot"><span class="annottext">Key (MaybeMap (GenMap TypeMapX))
-&gt; MaybeMap (GenMap TypeMapX) a -&gt; Maybe a
forall (m :: * -&gt; *) b. TrieMap m =&gt; Key m -&gt; m b -&gt; Maybe b
</span><a href="GHC.Data.TrieMap.html#lookupTM"><span class="hs-identifier hs-var">lookupTM</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; Type -&gt; DeBruijn Type
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855548"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">(Type -&gt; DeBruijn Type) -&gt; Maybe Type -&gt; Maybe (DeBruijn Type)
forall (f :: * -&gt; *) a b. Functor f =&gt; (a -&gt; b) -&gt; f a -&gt; f b
</span><a href="../../base/src/Data.Functor.html#%3C%24%3E"><span class="hs-operator hs-var">&lt;$&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Id -&gt; Maybe Type
</span><a href="GHC.Types.Var.html#varMultMaybe"><span class="hs-identifier hs-var">varMultMaybe</span></a></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680855547"><span class="hs-identifier hs-var">v</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">MaybeMap (GenMap TypeMapX) a
</span><a href="#local-6989586621680855545"><span class="hs-identifier hs-var">multmap</span></a></span><span>
</span><span id="line-794"></span><span>
</span><span id="line-795"></span><span>
</span><span id="line-796"></span><span class="annot"><a href="GHC.Core.Map.html#xtBndr"><span class="hs-identifier hs-type">xtBndr</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-keyword">forall</span><span> </span><span id="local-6989586621680857108"><span class="annot"><a href="#local-6989586621680857108"><span class="hs-identifier hs-type">a</span></a></span></span><span> </span><span class="hs-operator">.</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CmEnv"><span class="hs-identifier hs-type">CmEnv</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Var"><span class="hs-identifier hs-type">Var</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Data.TrieMap.html#XT"><span class="hs-identifier hs-type">XT</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857108"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#BndrMap"><span class="hs-identifier hs-type">BndrMap</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857108"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#BndrMap"><span class="hs-identifier hs-type">BndrMap</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857108"><span class="hs-identifier hs-type">a</span></a></span><span>
</span><span id="line-797"></span><span id="xtBndr"><span class="annot"><span class="annottext">xtBndr :: forall a. CmEnv -&gt; Id -&gt; XT a -&gt; BndrMap a -&gt; BndrMap a
</span><a href="GHC.Core.Map.html#xtBndr"><span class="hs-identifier hs-var hs-var">xtBndr</span></a></span></span><span> </span><span id="local-6989586621680855534"><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855534"><span class="hs-identifier hs-var">env</span></a></span></span><span> </span><span id="local-6989586621680855533"><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680855533"><span class="hs-identifier hs-var">v</span></a></span></span><span> </span><span id="local-6989586621680855532"><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680855532"><span class="hs-identifier hs-var">xt</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#BndrMap"><span class="hs-identifier hs-type">BndrMap</span></a></span><span> </span><span id="local-6989586621680855531"><span class="annot"><span class="annottext">TypeMapG (MaybeMap (GenMap TypeMapX) a)
</span><a href="#local-6989586621680855531"><span class="hs-identifier hs-var">tymap</span></a></span></span><span class="hs-special">)</span><span>  </span><span class="hs-glyph">=</span><span>
</span><span id="line-798"></span><span>  </span><span class="annot"><span class="annottext">TypeMapG (MaybeMap (GenMap TypeMapX) a) -&gt; BndrMap a
forall a. TypeMapG (MaybeMap (GenMap TypeMapX) a) -&gt; BndrMap a
</span><a href="GHC.Core.Map.html#BndrMap"><span class="hs-identifier hs-var">BndrMap</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TypeMapG (MaybeMap (GenMap TypeMapX) a)
</span><a href="#local-6989586621680855531"><span class="hs-identifier hs-var">tymap</span></a></span><span> </span><span class="annot"><span class="annottext">TypeMapG (MaybeMap (GenMap TypeMapX) a)
-&gt; (TypeMapG (MaybeMap (GenMap TypeMapX) a)
    -&gt; TypeMapG (MaybeMap (GenMap TypeMapX) a))
-&gt; TypeMapG (MaybeMap (GenMap TypeMapX) a)
forall a b. a -&gt; (a -&gt; b) -&gt; b
</span><a href="GHC.Data.TrieMap.html#%7C%3E"><span class="hs-operator hs-var">|&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Key TypeMapX
-&gt; XT (MaybeMap (GenMap TypeMapX) a)
-&gt; TypeMapG (MaybeMap (GenMap TypeMapX) a)
-&gt; TypeMapG (MaybeMap (GenMap TypeMapX) a)
forall (m :: * -&gt; *) a.
(Eq (Key m), TrieMap m) =&gt;
Key m -&gt; XT a -&gt; GenMap m a -&gt; GenMap m a
</span><a href="GHC.Data.TrieMap.html#xtG"><span class="hs-identifier hs-var">xtG</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; Type -&gt; DeBruijn Type
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855534"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Id -&gt; Type
</span><a href="GHC.Types.Var.html#varType"><span class="hs-identifier hs-var hs-var">varType</span></a></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680855533"><span class="hs-identifier hs-var">v</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">(XT (MaybeMap (GenMap TypeMapX) a)
 -&gt; TypeMapG (MaybeMap (GenMap TypeMapX) a)
 -&gt; TypeMapG (MaybeMap (GenMap TypeMapX) a))
-&gt; (MaybeMap (GenMap TypeMapX) a -&gt; MaybeMap (GenMap TypeMapX) a)
-&gt; TypeMapG (MaybeMap (GenMap TypeMapX) a)
-&gt; TypeMapG (MaybeMap (GenMap TypeMapX) a)
forall (m2 :: * -&gt; *) a (m1 :: * -&gt; *).
TrieMap m2 =&gt;
(XT (m2 a) -&gt; m1 (m2 a) -&gt; m1 (m2 a))
-&gt; (m2 a -&gt; m2 a) -&gt; m1 (m2 a) -&gt; m1 (m2 a)
</span><a href="GHC.Data.TrieMap.html#%7C%3E%3E"><span class="hs-operator hs-var">|&gt;&gt;</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Key (MaybeMap (GenMap TypeMapX))
-&gt; XT a
-&gt; MaybeMap (GenMap TypeMapX) a
-&gt; MaybeMap (GenMap TypeMapX) a
forall (m :: * -&gt; *) b. TrieMap m =&gt; Key m -&gt; XT b -&gt; m b -&gt; m b
</span><a href="GHC.Data.TrieMap.html#alterTM"><span class="hs-identifier hs-var">alterTM</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmEnv -&gt; Type -&gt; DeBruijn Type
forall a. CmEnv -&gt; a -&gt; DeBruijn a
</span><a href="GHC.Core.Map.html#D"><span class="hs-identifier hs-var">D</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855534"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">(Type -&gt; DeBruijn Type) -&gt; Maybe Type -&gt; Maybe (DeBruijn Type)
forall (f :: * -&gt; *) a b. Functor f =&gt; (a -&gt; b) -&gt; f a -&gt; f b
</span><a href="../../base/src/Data.Functor.html#%3C%24%3E"><span class="hs-operator hs-var">&lt;$&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Id -&gt; Maybe Type
</span><a href="GHC.Types.Var.html#varMultMaybe"><span class="hs-identifier hs-var">varMultMaybe</span></a></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680855533"><span class="hs-identifier hs-var">v</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680855532"><span class="hs-identifier hs-var">xt</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-799"></span><span>
</span><span id="line-800"></span><span>
</span><span id="line-801"></span><span class="hs-comment">--------- Variable occurrence -------------</span><span>
</span><span id="line-802"></span><span class="hs-keyword">data</span><span> </span><span id="VarMap"><span class="annot"><a href="GHC.Core.Map.html#VarMap"><span class="hs-identifier hs-var">VarMap</span></a></span></span><span> </span><span id="local-6989586621680856908"><span class="annot"><a href="#local-6989586621680856908"><span class="hs-identifier hs-type">a</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="VM"><span class="annot"><a href="GHC.Core.Map.html#VM"><span class="hs-identifier hs-var">VM</span></a></span></span><span> </span><span class="hs-special">{</span><span> </span><span id="vm_bvar"><span class="annot"><span class="annottext">forall a. VarMap a -&gt; BoundVarMap a
</span><a href="GHC.Core.Map.html#vm_bvar"><span class="hs-identifier hs-var hs-var">vm_bvar</span></a></span></span><span>   </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#BoundVarMap"><span class="hs-identifier hs-type">BoundVarMap</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680856908"><span class="hs-identifier hs-type">a</span></a></span><span>  </span><span class="hs-comment">-- Bound variable</span><span>
</span><span id="line-803"></span><span>                   </span><span class="hs-special">,</span><span> </span><span id="vm_fvar"><span class="annot"><span class="annottext">forall a. VarMap a -&gt; DVarEnv a
</span><a href="GHC.Core.Map.html#vm_fvar"><span class="hs-identifier hs-var hs-var">vm_fvar</span></a></span></span><span>   </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.Env.html#DVarEnv"><span class="hs-identifier hs-type">DVarEnv</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680856908"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-special">}</span><span>      </span><span class="hs-comment">-- Free variable</span><span>
</span><span id="line-804"></span><span>
</span><span id="line-805"></span><span class="hs-keyword">instance</span><span> </span><span class="annot"><a href="GHC.Data.TrieMap.html#TrieMap"><span class="hs-identifier hs-type">TrieMap</span></a></span><span> </span><span class="annot"><a href="GHC.Core.Map.html#VarMap"><span class="hs-identifier hs-type">VarMap</span></a></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-806"></span><span>   </span><span class="hs-keyword">type</span><span> </span><span id="Key"><span class="annot"><a href="GHC.Data.TrieMap.html#Key"><span class="hs-identifier hs-var">Key</span></a></span></span><span> </span><span class="annot"><a href="GHC.Core.Map.html#VarMap"><span class="hs-identifier hs-type">VarMap</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Var"><span class="hs-identifier hs-type">Var</span></a></span><span>
</span><span id="line-807"></span><span>   </span><span id="local-6989586621680855522"><span class="annot"><span class="annottext">emptyTM :: forall a. VarMap a
</span><a href="#local-6989586621680855522"><span class="hs-identifier hs-var hs-var hs-var hs-var">emptyTM</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">VM :: forall a. BoundVarMap a -&gt; DVarEnv a -&gt; VarMap a
</span><a href="GHC.Core.Map.html#VM"><span class="hs-identifier hs-type">VM</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">vm_bvar :: BoundVarMap a
</span><a href="GHC.Core.Map.html#vm_bvar"><span class="hs-identifier hs-var">vm_bvar</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BoundVarMap a
forall a. IntMap a
</span><a href="../../containers/src/Data.IntMap.Internal.html#empty"><span class="hs-identifier hs-var">IntMap.empty</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">vm_fvar :: DVarEnv a
</span><a href="GHC.Core.Map.html#vm_fvar"><span class="hs-identifier hs-var">vm_fvar</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DVarEnv a
forall a. DVarEnv a
</span><a href="GHC.Types.Var.Env.html#emptyDVarEnv"><span class="hs-identifier hs-var">emptyDVarEnv</span></a></span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-808"></span><span>   </span><span id="local-6989586621680855519"><span class="annot"><span class="annottext">lookupTM :: forall b. Key VarMap -&gt; VarMap b -&gt; Maybe b
</span><a href="#local-6989586621680855519"><span class="hs-identifier hs-var hs-var hs-var hs-var">lookupTM</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; Id -&gt; VarMap b -&gt; Maybe b
forall a. CmEnv -&gt; Id -&gt; VarMap a -&gt; Maybe a
</span><a href="GHC.Core.Map.html#lkVar"><span class="hs-identifier hs-var">lkVar</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="GHC.Core.Map.html#emptyCME"><span class="hs-identifier hs-var">emptyCME</span></a></span><span>
</span><span id="line-809"></span><span>   </span><span id="local-6989586621680855518"><span class="annot"><span class="annottext">alterTM :: forall b. Key VarMap -&gt; XT b -&gt; VarMap b -&gt; VarMap b
</span><a href="#local-6989586621680855518"><span class="hs-identifier hs-var hs-var hs-var hs-var">alterTM</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; Id -&gt; (Maybe b -&gt; Maybe b) -&gt; VarMap b -&gt; VarMap b
forall a. CmEnv -&gt; Id -&gt; XT a -&gt; VarMap a -&gt; VarMap a
</span><a href="GHC.Core.Map.html#xtVar"><span class="hs-identifier hs-var">xtVar</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="GHC.Core.Map.html#emptyCME"><span class="hs-identifier hs-var">emptyCME</span></a></span><span>
</span><span id="line-810"></span><span>   </span><span id="local-6989586621680855517"><span class="annot"><span class="annottext">foldTM :: forall a b. (a -&gt; b -&gt; b) -&gt; VarMap a -&gt; b -&gt; b
</span><a href="#local-6989586621680855517"><span class="hs-identifier hs-var hs-var hs-var hs-var">foldTM</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(a -&gt; b -&gt; b) -&gt; VarMap a -&gt; b -&gt; b
forall a b. (a -&gt; b -&gt; b) -&gt; VarMap a -&gt; b -&gt; b
</span><a href="GHC.Core.Map.html#fdVar"><span class="hs-identifier hs-var">fdVar</span></a></span><span>
</span><span id="line-811"></span><span>   </span><span id="local-6989586621680855515"><span class="annot"><span class="annottext">mapTM :: forall a b. (a -&gt; b) -&gt; VarMap a -&gt; VarMap b
</span><a href="#local-6989586621680855515"><span class="hs-identifier hs-var hs-var hs-var hs-var">mapTM</span></a></span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(a -&gt; b) -&gt; VarMap a -&gt; VarMap b
forall a b. (a -&gt; b) -&gt; VarMap a -&gt; VarMap b
</span><a href="GHC.Core.Map.html#mapVar"><span class="hs-identifier hs-var">mapVar</span></a></span><span>
</span><span id="line-812"></span><span>
</span><span id="line-813"></span><span id="local-6989586621680855512"><span id="local-6989586621680855513"><span class="annot"><a href="GHC.Core.Map.html#mapVar"><span class="hs-identifier hs-type">mapVar</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621680855513"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-glyph">-&gt;</span><span class="annot"><a href="#local-6989586621680855512"><span class="hs-identifier hs-type">b</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#VarMap"><span class="hs-identifier hs-type">VarMap</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680855513"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#VarMap"><span class="hs-identifier hs-type">VarMap</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680855512"><span class="hs-identifier hs-type">b</span></a></span></span></span><span>
</span><span id="line-814"></span><span id="mapVar"><span class="annot"><span class="annottext">mapVar :: forall a b. (a -&gt; b) -&gt; VarMap a -&gt; VarMap b
</span><a href="GHC.Core.Map.html#mapVar"><span class="hs-identifier hs-var hs-var">mapVar</span></a></span></span><span> </span><span id="local-6989586621680855506"><span class="annot"><span class="annottext">a -&gt; b
</span><a href="#local-6989586621680855506"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Map.html#VM"><span class="hs-identifier hs-type">VM</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">vm_bvar :: forall a. VarMap a -&gt; BoundVarMap a
</span><a href="GHC.Core.Map.html#vm_bvar"><span class="hs-identifier hs-var">vm_bvar</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680855505"><span class="annot"><span class="annottext">BoundVarMap a
</span><a href="#local-6989586621680855505"><span class="hs-identifier hs-var">bv</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">vm_fvar :: forall a. VarMap a -&gt; DVarEnv a
</span><a href="GHC.Core.Map.html#vm_fvar"><span class="hs-identifier hs-var">vm_fvar</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680855504"><span class="annot"><span class="annottext">DVarEnv a
</span><a href="#local-6989586621680855504"><span class="hs-identifier hs-var">fv</span></a></span></span><span> </span><span class="hs-special">}</span><span class="hs-special">)</span><span>
</span><span id="line-815"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">VM :: forall a. BoundVarMap a -&gt; DVarEnv a -&gt; VarMap a
</span><a href="GHC.Core.Map.html#VM"><span class="hs-identifier hs-type">VM</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">vm_bvar :: BoundVarMap b
</span><a href="GHC.Core.Map.html#vm_bvar"><span class="hs-identifier hs-var">vm_bvar</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(a -&gt; b) -&gt; BoundVarMap a -&gt; BoundVarMap b
forall (m :: * -&gt; *) a b. TrieMap m =&gt; (a -&gt; b) -&gt; m a -&gt; m b
</span><a href="GHC.Data.TrieMap.html#mapTM"><span class="hs-identifier hs-var">mapTM</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b
</span><a href="#local-6989586621680855506"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">BoundVarMap a
</span><a href="#local-6989586621680855505"><span class="hs-identifier hs-var">bv</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">vm_fvar :: DVarEnv b
</span><a href="GHC.Core.Map.html#vm_fvar"><span class="hs-identifier hs-var">vm_fvar</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(a -&gt; b) -&gt; DVarEnv a -&gt; DVarEnv b
forall (m :: * -&gt; *) a b. TrieMap m =&gt; (a -&gt; b) -&gt; m a -&gt; m b
</span><a href="GHC.Data.TrieMap.html#mapTM"><span class="hs-identifier hs-var">mapTM</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b
</span><a href="#local-6989586621680855506"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">DVarEnv a
</span><a href="#local-6989586621680855504"><span class="hs-identifier hs-var">fv</span></a></span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-816"></span><span>
</span><span id="line-817"></span><span id="local-6989586621680857135"><span class="annot"><a href="GHC.Core.Map.html#lkVar"><span class="hs-identifier hs-type">lkVar</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CmEnv"><span class="hs-identifier hs-type">CmEnv</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Var"><span class="hs-identifier hs-type">Var</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#VarMap"><span class="hs-identifier hs-type">VarMap</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857135"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857135"><span class="hs-identifier hs-type">a</span></a></span></span><span>
</span><span id="line-818"></span><span id="lkVar"><span class="annot"><span class="annottext">lkVar :: forall a. CmEnv -&gt; Id -&gt; VarMap a -&gt; Maybe a
</span><a href="GHC.Core.Map.html#lkVar"><span class="hs-identifier hs-var hs-var">lkVar</span></a></span></span><span> </span><span id="local-6989586621680855502"><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855502"><span class="hs-identifier hs-var">env</span></a></span></span><span> </span><span id="local-6989586621680855501"><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680855501"><span class="hs-identifier hs-var">v</span></a></span></span><span>
</span><span id="line-819"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span id="local-6989586621680855500"><span class="annot"><span class="annottext">BoundVar
</span><a href="#local-6989586621680855500"><span class="hs-identifier hs-var">bv</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; Id -&gt; Maybe BoundVar
</span><a href="GHC.Core.Map.html#lookupCME"><span class="hs-identifier hs-var">lookupCME</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855502"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680855501"><span class="hs-identifier hs-var">v</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">VarMap a -&gt; BoundVarMap a
forall a. VarMap a -&gt; BoundVarMap a
</span><a href="GHC.Core.Map.html#vm_bvar"><span class="hs-identifier hs-var hs-var">vm_bvar</span></a></span><span> </span><span class="annot"><span class="annottext">(VarMap a -&gt; BoundVarMap a)
-&gt; (BoundVarMap a -&gt; Maybe a) -&gt; VarMap a -&gt; Maybe a
forall a b c. (a -&gt; b) -&gt; (b -&gt; c) -&gt; a -&gt; c
</span><a href="GHC.Data.TrieMap.html#%3E.%3E"><span class="hs-operator hs-var">&gt;.&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Key IntMap -&gt; BoundVarMap a -&gt; Maybe a
forall (m :: * -&gt; *) b. TrieMap m =&gt; Key m -&gt; m b -&gt; Maybe b
</span><a href="GHC.Data.TrieMap.html#lookupTM"><span class="hs-identifier hs-var">lookupTM</span></a></span><span> </span><span class="annot"><span class="annottext">BoundVar
Key IntMap
</span><a href="#local-6989586621680855500"><span class="hs-identifier hs-var">bv</span></a></span><span>
</span><span id="line-820"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>                  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">VarMap a -&gt; DVarEnv a
forall a. VarMap a -&gt; DVarEnv a
</span><a href="GHC.Core.Map.html#vm_fvar"><span class="hs-identifier hs-var hs-var">vm_fvar</span></a></span><span> </span><span class="annot"><span class="annottext">(VarMap a -&gt; DVarEnv a)
-&gt; (DVarEnv a -&gt; Maybe a) -&gt; VarMap a -&gt; Maybe a
forall a b c. (a -&gt; b) -&gt; (b -&gt; c) -&gt; a -&gt; c
</span><a href="GHC.Data.TrieMap.html#%3E.%3E"><span class="hs-operator hs-var">&gt;.&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Id -&gt; DVarEnv a -&gt; Maybe a
forall a. Id -&gt; DVarEnv a -&gt; Maybe a
</span><a href="GHC.Core.Map.html#lkDFreeVar"><span class="hs-identifier hs-var">lkDFreeVar</span></a></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680855501"><span class="hs-identifier hs-var">v</span></a></span><span>
</span><span id="line-821"></span><span>
</span><span id="line-822"></span><span id="local-6989586621680857115"><span class="annot"><a href="GHC.Core.Map.html#xtVar"><span class="hs-identifier hs-type">xtVar</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#CmEnv"><span class="hs-identifier hs-type">CmEnv</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Var"><span class="hs-identifier hs-type">Var</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Data.TrieMap.html#XT"><span class="hs-identifier hs-type">XT</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857115"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#VarMap"><span class="hs-identifier hs-type">VarMap</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857115"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#VarMap"><span class="hs-identifier hs-type">VarMap</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680857115"><span class="hs-identifier hs-type">a</span></a></span></span><span>
</span><span id="line-823"></span><span id="xtVar"><span class="annot"><span class="annottext">xtVar :: forall a. CmEnv -&gt; Id -&gt; XT a -&gt; VarMap a -&gt; VarMap a
</span><a href="GHC.Core.Map.html#xtVar"><span class="hs-identifier hs-var hs-var">xtVar</span></a></span></span><span> </span><span id="local-6989586621680855498"><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855498"><span class="hs-identifier hs-var">env</span></a></span></span><span> </span><span id="local-6989586621680855497"><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680855497"><span class="hs-identifier hs-var">v</span></a></span></span><span> </span><span id="local-6989586621680855496"><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680855496"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span id="local-6989586621680855495"><span class="annot"><span class="annottext">VarMap a
</span><a href="#local-6989586621680855495"><span class="hs-identifier hs-var">m</span></a></span></span><span>
</span><span id="line-824"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span id="local-6989586621680855494"><span class="annot"><span class="annottext">BoundVar
</span><a href="#local-6989586621680855494"><span class="hs-identifier hs-var">bv</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">CmEnv -&gt; Id -&gt; Maybe BoundVar
</span><a href="GHC.Core.Map.html#lookupCME"><span class="hs-identifier hs-var">lookupCME</span></a></span><span> </span><span class="annot"><span class="annottext">CmEnv
</span><a href="#local-6989586621680855498"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680855497"><span class="hs-identifier hs-var">v</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">VarMap a
</span><a href="#local-6989586621680855495"><span class="hs-identifier hs-var">m</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">vm_bvar :: BoundVarMap a
</span><a href="GHC.Core.Map.html#vm_bvar"><span class="hs-identifier hs-var">vm_bvar</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">VarMap a -&gt; BoundVarMap a
forall a. VarMap a -&gt; BoundVarMap a
</span><a href="GHC.Core.Map.html#vm_bvar"><span class="hs-identifier hs-var hs-var">vm_bvar</span></a></span><span> </span><span class="annot"><span class="annottext">VarMap a
</span><a href="#local-6989586621680855495"><span class="hs-identifier hs-var">m</span></a></span><span> </span><span class="annot"><span class="annottext">BoundVarMap a -&gt; (BoundVarMap a -&gt; BoundVarMap a) -&gt; BoundVarMap a
forall a b. a -&gt; (a -&gt; b) -&gt; b
</span><a href="GHC.Data.TrieMap.html#%7C%3E"><span class="hs-operator hs-var">|&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Key IntMap -&gt; XT a -&gt; BoundVarMap a -&gt; BoundVarMap a
forall (m :: * -&gt; *) b. TrieMap m =&gt; Key m -&gt; XT b -&gt; m b -&gt; m b
</span><a href="GHC.Data.TrieMap.html#alterTM"><span class="hs-identifier hs-var">alterTM</span></a></span><span> </span><span class="annot"><span class="annottext">BoundVar
Key IntMap
</span><a href="#local-6989586621680855494"><span class="hs-identifier hs-var">bv</span></a></span><span> </span><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680855496"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-825"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>                  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">VarMap a
</span><a href="#local-6989586621680855495"><span class="hs-identifier hs-var">m</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">vm_fvar :: DVarEnv a
</span><a href="GHC.Core.Map.html#vm_fvar"><span class="hs-identifier hs-var">vm_fvar</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">VarMap a -&gt; DVarEnv a
forall a. VarMap a -&gt; DVarEnv a
</span><a href="GHC.Core.Map.html#vm_fvar"><span class="hs-identifier hs-var hs-var">vm_fvar</span></a></span><span> </span><span class="annot"><span class="annottext">VarMap a
</span><a href="#local-6989586621680855495"><span class="hs-identifier hs-var">m</span></a></span><span> </span><span class="annot"><span class="annottext">DVarEnv a -&gt; (DVarEnv a -&gt; DVarEnv a) -&gt; DVarEnv a
forall a b. a -&gt; (a -&gt; b) -&gt; b
</span><a href="GHC.Data.TrieMap.html#%7C%3E"><span class="hs-operator hs-var">|&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Id -&gt; XT a -&gt; DVarEnv a -&gt; DVarEnv a
forall a. Id -&gt; XT a -&gt; DVarEnv a -&gt; DVarEnv a
</span><a href="GHC.Core.Map.html#xtDFreeVar"><span class="hs-identifier hs-var">xtDFreeVar</span></a></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680855497"><span class="hs-identifier hs-var">v</span></a></span><span> </span><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680855496"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-826"></span><span>
</span><span id="line-827"></span><span id="local-6989586621680855492"><span id="local-6989586621680855493"><span class="annot"><a href="GHC.Core.Map.html#fdVar"><span class="hs-identifier hs-type">fdVar</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621680855493"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680855492"><span class="hs-identifier hs-type">b</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680855492"><span class="hs-identifier hs-type">b</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.Map.html#VarMap"><span class="hs-identifier hs-type">VarMap</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680855493"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680855492"><span class="hs-identifier hs-type">b</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680855492"><span class="hs-identifier hs-type">b</span></a></span></span></span><span>
</span><span id="line-828"></span><span id="fdVar"><span class="annot"><span class="annottext">fdVar :: forall a b. (a -&gt; b -&gt; b) -&gt; VarMap a -&gt; b -&gt; b
</span><a href="GHC.Core.Map.html#fdVar"><span class="hs-identifier hs-var hs-var">fdVar</span></a></span></span><span> </span><span id="local-6989586621680855488"><span class="annot"><span class="annottext">a -&gt; b -&gt; b
</span><a href="#local-6989586621680855488"><span class="hs-identifier hs-var">k</span></a></span></span><span> </span><span id="local-6989586621680855487"><span class="annot"><span class="annottext">VarMap a
</span><a href="#local-6989586621680855487"><span class="hs-identifier hs-var">m</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(a -&gt; b -&gt; b) -&gt; IntMap a -&gt; b -&gt; b
forall (m :: * -&gt; *) a b.
TrieMap m =&gt;
(a -&gt; b -&gt; b) -&gt; m a -&gt; b -&gt; b
</span><a href="GHC.Data.TrieMap.html#foldTM"><span class="hs-identifier hs-var">foldTM</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b -&gt; b
</span><a href="#local-6989586621680855488"><span class="hs-identifier hs-var">k</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">VarMap a -&gt; IntMap a
forall a. VarMap a -&gt; BoundVarMap a
</span><a href="GHC.Core.Map.html#vm_bvar"><span class="hs-identifier hs-var hs-var">vm_bvar</span></a></span><span> </span><span class="annot"><span class="annottext">VarMap a
</span><a href="#local-6989586621680855487"><span class="hs-identifier hs-var">m</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-829"></span><span>          </span><span class="annot"><span class="annottext">(b -&gt; b) -&gt; (b -&gt; b) -&gt; b -&gt; b
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">(a -&gt; b -&gt; b) -&gt; UniqDFM Id a -&gt; b -&gt; b
forall (m :: * -&gt; *) a b.
TrieMap m =&gt;
(a -&gt; b -&gt; b) -&gt; m a -&gt; b -&gt; b
</span><a href="GHC.Data.TrieMap.html#foldTM"><span class="hs-identifier hs-var">foldTM</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; b -&gt; b
</span><a href="#local-6989586621680855488"><span class="hs-identifier hs-var">k</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">VarMap a -&gt; UniqDFM Id a
forall a. VarMap a -&gt; DVarEnv a
</span><a href="GHC.Core.Map.html#vm_fvar"><span class="hs-identifier hs-var hs-var">vm_fvar</span></a></span><span> </span><span class="annot"><span class="annottext">VarMap a
</span><a href="#local-6989586621680855487"><span class="hs-identifier hs-var">m</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-830"></span><span>
</span><span id="line-831"></span><span id="local-6989586621680856890"><span class="annot"><a href="GHC.Core.Map.html#lkDFreeVar"><span class="hs-identifier hs-type">lkDFreeVar</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Var"><span class="hs-identifier hs-type">Var</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Env.html#DVarEnv"><span class="hs-identifier hs-type">DVarEnv</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680856890"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680856890"><span class="hs-identifier hs-type">a</span></a></span></span><span>
</span><span id="line-832"></span><span id="lkDFreeVar"><span class="annot"><span class="annottext">lkDFreeVar :: forall a. Id -&gt; DVarEnv a -&gt; Maybe a
</span><a href="GHC.Core.Map.html#lkDFreeVar"><span class="hs-identifier hs-var hs-var">lkDFreeVar</span></a></span></span><span> </span><span id="local-6989586621680855486"><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680855486"><span class="hs-identifier hs-var">var</span></a></span></span><span> </span><span id="local-6989586621680855485"><span class="annot"><span class="annottext">DVarEnv a
</span><a href="#local-6989586621680855485"><span class="hs-identifier hs-var">env</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DVarEnv a -&gt; Id -&gt; Maybe a
forall a. DVarEnv a -&gt; Id -&gt; Maybe a
</span><a href="GHC.Types.Var.Env.html#lookupDVarEnv"><span class="hs-identifier hs-var">lookupDVarEnv</span></a></span><span> </span><span class="annot"><span class="annottext">DVarEnv a
</span><a href="#local-6989586621680855485"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680855486"><span class="hs-identifier hs-var">var</span></a></span><span>
</span><span id="line-833"></span><span>
</span><span id="line-834"></span><span id="local-6989586621680856888"><span class="annot"><a href="GHC.Core.Map.html#xtDFreeVar"><span class="hs-identifier hs-type">xtDFreeVar</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Var"><span class="hs-identifier hs-type">Var</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Data.TrieMap.html#XT"><span class="hs-identifier hs-type">XT</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680856888"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Env.html#DVarEnv"><span class="hs-identifier hs-type">DVarEnv</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680856888"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.Env.html#DVarEnv"><span class="hs-identifier hs-type">DVarEnv</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680856888"><span class="hs-identifier hs-type">a</span></a></span></span><span>
</span><span id="line-835"></span><span id="xtDFreeVar"><span class="annot"><span class="annottext">xtDFreeVar :: forall a. Id -&gt; XT a -&gt; DVarEnv a -&gt; DVarEnv a
</span><a href="GHC.Core.Map.html#xtDFreeVar"><span class="hs-identifier hs-var hs-var">xtDFreeVar</span></a></span></span><span> </span><span id="local-6989586621680855483"><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680855483"><span class="hs-identifier hs-var">v</span></a></span></span><span> </span><span id="local-6989586621680855482"><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680855482"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span id="local-6989586621680855481"><span class="annot"><span class="annottext">DVarEnv a
</span><a href="#local-6989586621680855481"><span class="hs-identifier hs-var">m</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">XT a -&gt; DVarEnv a -&gt; Id -&gt; DVarEnv a
forall a. (Maybe a -&gt; Maybe a) -&gt; DVarEnv a -&gt; Id -&gt; DVarEnv a
</span><a href="GHC.Types.Var.Env.html#alterDVarEnv"><span class="hs-identifier hs-var">alterDVarEnv</span></a></span><span> </span><span class="annot"><span class="annottext">XT a
</span><a href="#local-6989586621680855482"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">DVarEnv a
</span><a href="#local-6989586621680855481"><span class="hs-identifier hs-var">m</span></a></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680855483"><span class="hs-identifier hs-var">v</span></a></span><span>
</span><span id="line-836"></span></pre></body></html>